aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Kim <andrewdkim@users.noreply.github.com>2019-11-16 13:15:59 -0500
committerAndrew Kim <andrewdkim@users.noreply.github.com>2019-11-16 13:15:59 -0500
commit4a16d4b0c3a4366d6501435a3966eb2a88e42639 (patch)
treefb53b3cbec167ac62bce94b351d8fcab34a2f875
parentd7f772d93458e7669a1d2e954ad741e1c67318a5 (diff)
parent22d1e65236bae11c508d5c34ebcbddd1a552bfd8 (diff)
merge from master
-rw-r--r--.vscode/settings.json4
-rw-r--r--package.json1
-rw-r--r--solr-8.1.1/bin/.install_solr_service 2.sh.icloudbin0 -> 175 bytes
-rw-r--r--solr-8.1.1/bin/.oom_solr 2.sh.icloudbin0 -> 161 bytes
-rw-r--r--solr-8.1.1/bin/.solr.in 2.cmd.icloudbin0 -> 161 bytes
-rw-r--r--solr-8.1.1/example/.README 2.txt.icloudbin0 -> 160 bytes
-rw-r--r--solr-8.1.1/licenses/.activation-1.1.1.jar 2.sha1.icloudbin0 -> 176 bytes
-rw-r--r--solr-8.1.1/licenses/.android-json-NOTICE 2.txt.icloudbin0 -> 174 bytes
-rw-r--r--solr-8.1.1/licenses/.ant-1.8.2.jar 2.sha1.icloudbin0 -> 169 bytes
-rw-r--r--solr-8.1.1/licenses/.ant-NOTICE 2.txt.icloudbin0 -> 166 bytes
-rw-r--r--solr-8.1.1/licenses/.antlr4-runtime-LICENSE-BSD 2.txt.icloudbin0 -> 182 bytes
-rw-r--r--solr-8.1.1/licenses/.antlr4-runtime-NOTICE 2.txt.icloudbin0 -> 176 bytes
-rw-r--r--solr-8.1.1/licenses/.apache-mime4j-core-0.8.2.jar 2.sha1.icloudbin0 -> 184 bytes
-rw-r--r--solr-8.1.1/licenses/.apache-mime4j-core-NOTICE 2.txt.icloudbin0 -> 181 bytes
-rw-r--r--solr-8.1.1/licenses/.apache-mime4j-dom-0.8.2.jar 2.sha1.icloudbin0 -> 183 bytes
-rw-r--r--solr-8.1.1/licenses/.apache-mime4j-dom-NOTICE 2.txt.icloudbin0 -> 180 bytes
-rw-r--r--solr-8.1.1/licenses/.argparse4j-0.8.1.jar 2.sha1.icloudbin0 -> 176 bytes
-rw-r--r--solr-8.1.1/licenses/.argparse4j-LICENSE-MIT 2.txt.icloudbin0 -> 178 bytes
-rw-r--r--solr-8.1.1/licenses/.asciidoctor-ant-1.6.0-alpha.5.jar 2.sha1.icloudbin0 -> 189 bytes
-rw-r--r--solr-8.1.1/licenses/.asciidoctor-ant-NOTICE 2.txt.icloudbin0 -> 177 bytes
-rw-r--r--solr-8.1.1/licenses/.asm-5.1.jar 2.sha1.icloudbin0 -> 167 bytes
-rw-r--r--solr-8.1.1/licenses/.asm-LICENSE-BSD 2.txt.icloudbin0 -> 171 bytes
-rw-r--r--solr-8.1.1/licenses/.asm-LICENSE-BSD_LIKE 2.txt.icloudbin0 -> 176 bytes
-rw-r--r--solr-8.1.1/licenses/.asm-NOTICE 2.txt.icloudbin0 -> 165 bytes
-rw-r--r--solr-8.1.1/licenses/.asm-commons-5.1.jar 2.sha1.icloudbin0 -> 175 bytes
-rw-r--r--solr-8.1.1/licenses/.asm-commons-LICENSE-BSD_LIKE 2.txt.icloudbin0 -> 184 bytes
-rw-r--r--solr-8.1.1/licenses/.asm-commons-NOTICE 2.txt.icloudbin0 -> 173 bytes
-rw-r--r--solr-8.1.1/licenses/.aspectjrt-1.8.0.jar 2.sha1.icloudbin0 -> 175 bytes
-rw-r--r--solr-8.1.1/licenses/.attributes-binder-1.3.3.jar 2.sha1.icloudbin0 -> 183 bytes
-rw-r--r--solr-8.1.1/licenses/.attributes-binder-NOTICE 2.txt.icloudbin0 -> 180 bytes
-rw-r--r--solr-8.1.1/licenses/.avatica-core-1.13.0.jar 2.sha1.icloudbin0 -> 179 bytes
-rw-r--r--solr-8.1.1/licenses/.avatica-core-NOTICE 2.txt.icloudbin0 -> 174 bytes
-rw-r--r--solr-8.1.1/licenses/.bcmail-LICENSE-BSD_LIKE 2.txt.icloudbin0 -> 179 bytes
-rw-r--r--solr-8.1.1/licenses/.bcmail-NOTICE 2.txt.icloudbin0 -> 168 bytes
-rw-r--r--solr-8.1.1/licenses/.bcmail-jdk15on-1.60.jar 2.sha1.icloudbin0 -> 179 bytes
-rw-r--r--solr-8.1.1/licenses/.bcpkix-jdk15on-1.60.jar 2.sha1.icloudbin0 -> 179 bytes
-rw-r--r--solr-8.1.1/licenses/.bcpkix-jdk15on-LICENSE-BSD_LIKE 2.txt.icloudbin0 -> 187 bytes
-rw-r--r--solr-8.1.1/licenses/.bcpkix-jdk15on-NOTICE 2.txt.icloudbin0 -> 176 bytes
-rw-r--r--solr-8.1.1/licenses/.bcprov-LICENSE-BSD_LIKE 2.txt.icloudbin0 -> 179 bytes
-rw-r--r--solr-8.1.1/licenses/.bcprov-NOTICE 2.txt.icloudbin0 -> 168 bytes
-rw-r--r--solr-8.1.1/licenses/.bcprov-jdk15on-1.60.jar 2.sha1.icloudbin0 -> 179 bytes
-rw-r--r--solr-8.1.1/licenses/.boilerpipe-1.1.0.jar 2.sha1.icloudbin0 -> 176 bytes
-rw-r--r--solr-8.1.1/licenses/.boilerpipe-LICENSE-ASL 2.txt.icloudbin0 -> 178 bytes
-rw-r--r--solr-8.1.1/licenses/.boilerpipe-NOTICE 2.txt.icloudbin0 -> 173 bytes
-rw-r--r--solr-8.1.1/licenses/.byte-buddy-1.9.3.jar 2.sha1.icloudbin0 -> 176 bytes
-rw-r--r--solr-8.1.1/licenses/.byte-buddy-NOTICE 2.txt.icloudbin0 -> 172 bytes
-rw-r--r--solr-8.1.1/licenses/.caffeine-2.4.0.jar 2.sha1.icloudbin0 -> 174 bytes
-rw-r--r--solr-8.1.1/licenses/.caffeine-NOTICE 2.txt.icloudbin0 -> 170 bytes
-rw-r--r--solr-8.1.1/licenses/.calcite-core-1.18.0.jar 2.sha1.icloudbin0 -> 179 bytes
-rw-r--r--solr-8.1.1/licenses/.calcite-core-NOTICE 2.txt.icloudbin0 -> 175 bytes
-rw-r--r--solr-8.1.1/licenses/.calcite-linq4j-1.18.0.jar 2.sha1.icloudbin0 -> 181 bytes
-rw-r--r--solr-8.1.1/licenses/.calcite-linq4j-NOTICE 2.txt.icloudbin0 -> 177 bytes
-rw-r--r--solr-8.1.1/licenses/.carrot2-guava-18.0.jar 2.sha1.icloudbin0 -> 178 bytes
-rw-r--r--solr-8.1.1/licenses/.carrot2-guava-NOTICE 2.txt.icloudbin0 -> 175 bytes
-rw-r--r--solr-8.1.1/licenses/.carrot2-mini-3.16.0.jar 2.sha1.icloudbin0 -> 179 bytes
-rw-r--r--solr-8.1.1/licenses/.carrot2-mini-LICENSE-BSD_LIKE 2.txt.icloudbin0 -> 185 bytes
-rw-r--r--solr-8.1.1/licenses/.carrot2-mini-NOTICE 2.txt.icloudbin0 -> 175 bytes
-rw-r--r--solr-8.1.1/licenses/.commons-beanutils-1.9.3.jar 2.sha1.icloudbin0 -> 183 bytes
-rw-r--r--solr-8.1.1/licenses/.commons-beanutils-NOTICE 2.txt.icloudbin0 -> 179 bytes
-rw-r--r--solr-8.1.1/licenses/.commons-cli-1.2.jar 2.sha1.icloudbin0 -> 175 bytes
-rw-r--r--solr-8.1.1/licenses/.commons-cli-NOTICE 2.txt.icloudbin0 -> 173 bytes
-rw-r--r--solr-8.1.1/licenses/.commons-codec-1.11.jar 2.sha1.icloudbin0 -> 178 bytes
-rw-r--r--solr-8.1.1/licenses/.commons-codec-NOTICE 2.txt.icloudbin0 -> 176 bytes
-rw-r--r--solr-8.1.1/licenses/.commons-collections-3.2.2.jar 2.sha1.icloudbin0 -> 185 bytes
-rw-r--r--solr-8.1.1/licenses/.commons-collections-NOTICE 2.txt.icloudbin0 -> 181 bytes
-rw-r--r--solr-8.1.1/licenses/.commons-collections4-NOTICE 2.txt.icloudbin0 -> 182 bytes
-rw-r--r--solr-8.1.1/licenses/.commons-compiler-3.0.9.jar 2.sha1.icloudbin0 -> 182 bytes
-rw-r--r--solr-8.1.1/licenses/.commons-compiler-LICENSE-BSD 2.txt.icloudbin0 -> 184 bytes
-rw-r--r--solr-8.1.1/licenses/.commons-compiler-NOTICE 2.txt.icloudbin0 -> 178 bytes
-rw-r--r--solr-8.1.1/licenses/.commons-compress-1.18.jar 2.sha1.icloudbin0 -> 181 bytes
-rw-r--r--solr-8.1.1/licenses/.commons-compress-NOTICE 2.txt.icloudbin0 -> 178 bytes
-rw-r--r--solr-8.1.1/licenses/.commons-configuration-NOTICE 2.txt.icloudbin0 -> 183 bytes
-rw-r--r--solr-8.1.1/licenses/.commons-configuration2-2.1.1.jar 2.sha1.icloudbin0 -> 188 bytes
-rw-r--r--solr-8.1.1/licenses/.commons-configuration2-NOTICE 2.txt.icloudbin0 -> 184 bytes
-rw-r--r--solr-8.1.1/licenses/.commons-digester-NOTICE 2.txt.icloudbin0 -> 178 bytes
-rw-r--r--solr-8.1.1/licenses/.commons-exec-1.3.jar 2.sha1.icloudbin0 -> 176 bytes
-rw-r--r--solr-8.1.1/licenses/.commons-exec-NOTICE 2.txt.icloudbin0 -> 174 bytes
-rw-r--r--solr-8.1.1/licenses/.commons-fileupload-1.3.3.jar 2.sha1.icloudbin0 -> 184 bytes
-rw-r--r--solr-8.1.1/licenses/.commons-fileupload-NOTICE 2.txt.icloudbin0 -> 180 bytes
-rw-r--r--solr-8.1.1/licenses/.commons-io-NOTICE 2.txt.icloudbin0 -> 172 bytes
-rw-r--r--solr-8.1.1/licenses/.commons-lang3-3.8.1.jar 2.sha1.icloudbin0 -> 179 bytes
-rw-r--r--solr-8.1.1/licenses/.commons-lang3-NOTICE 2.txt.icloudbin0 -> 176 bytes
-rw-r--r--solr-8.1.1/licenses/.commons-logging-1.1.3.jar 2.sha1.icloudbin0 -> 181 bytes
-rw-r--r--solr-8.1.1/licenses/.commons-logging-NOTICE 2.txt.icloudbin0 -> 177 bytes
-rw-r--r--solr-8.1.1/licenses/.commons-math3-3.6.1.jar 2.sha1.icloudbin0 -> 179 bytes
-rw-r--r--solr-8.1.1/licenses/.commons-math3-NOTICE 2.txt.icloudbin0 -> 176 bytes
-rw-r--r--solr-8.1.1/licenses/.commons-text-1.6.jar 2.sha1.icloudbin0 -> 176 bytes
-rw-r--r--solr-8.1.1/licenses/.commons-text-NOTICE 2.txt.icloudbin0 -> 174 bytes
-rw-r--r--solr-8.1.1/licenses/.curator-client-NOTICE 2.txt.icloudbin0 -> 176 bytes
-rw-r--r--solr-8.1.1/licenses/.curator-framework-2.13.0.jar 2.sha1.icloudbin0 -> 184 bytes
-rw-r--r--solr-8.1.1/licenses/.curator-framework-NOTICE 2.txt.icloudbin0 -> 179 bytes
-rw-r--r--solr-8.1.1/licenses/.curator-recipes-2.13.0.jar 2.sha1.icloudbin0 -> 182 bytes
-rw-r--r--solr-8.1.1/licenses/.curator-recipes-NOTICE 2.txt.icloudbin0 -> 177 bytes
-rw-r--r--solr-8.1.1/licenses/.curvesapi-1.04.jar 2.sha1.icloudbin0 -> 174 bytes
-rw-r--r--solr-8.1.1/licenses/.curvesapi-LICENSE-BSD_LIKE 2.txt.icloudbin0 -> 182 bytes
-rw-r--r--solr-8.1.1/licenses/.curvesapi-NOTICE 2.txt.icloudbin0 -> 171 bytes
-rw-r--r--solr-8.1.1/licenses/.dec-0.1.2.jar 2.sha1.icloudbin0 -> 169 bytes
-rw-r--r--solr-8.1.1/licenses/.dec-LICENSE-MIT 2.txt.icloudbin0 -> 171 bytes
-rw-r--r--solr-8.1.1/licenses/.dec-NOTICE 2.txt.icloudbin0 -> 166 bytes
-rw-r--r--solr-8.1.1/licenses/.disruptor-3.4.2.jar 2.sha1.icloudbin0 -> 175 bytes
-rw-r--r--solr-8.1.1/licenses/.disruptor-NOTICE 2.txt.icloudbin0 -> 171 bytes
-rw-r--r--solr-8.1.1/licenses/.eigenbase-properties-1.1.5.jar 2.sha1.icloudbin0 -> 186 bytes
-rw-r--r--solr-8.1.1/licenses/.eigenbase-properties-NOTICE 2.txt.icloudbin0 -> 183 bytes
-rw-r--r--solr-8.1.1/licenses/.fontbox-2.0.12.jar 2.sha1.icloudbin0 -> 174 bytes
-rw-r--r--solr-8.1.1/licenses/.fontbox-NOTICE 2.txt.icloudbin0 -> 170 bytes
-rw-r--r--solr-8.1.1/licenses/.guava-25.1-jre.jar 2.sha1.icloudbin0 -> 174 bytes
-rw-r--r--solr-8.1.1/licenses/.guava-NOTICE 2.txt.icloudbin0 -> 167 bytes
-rw-r--r--solr-8.1.1/licenses/.hadoop-annotations-3.2.0.jar 2.sha1.icloudbin0 -> 184 bytes
-rw-r--r--solr-8.1.1/licenses/.hadoop-annotations-NOTICE 2.txt.icloudbin0 -> 180 bytes
-rw-r--r--solr-8.1.1/licenses/.hadoop-auth-3.2.0.jar 2.sha1.icloudbin0 -> 177 bytes
-rw-r--r--solr-8.1.1/licenses/.hadoop-auth-NOTICE 2.txt.icloudbin0 -> 173 bytes
-rw-r--r--solr-8.1.1/licenses/.hadoop-common-3.2.0-tests.jar 2.sha1.icloudbin0 -> 185 bytes
-rw-r--r--solr-8.1.1/licenses/.hadoop-common-3.2.0.jar 2.sha1.icloudbin0 -> 179 bytes
-rw-r--r--solr-8.1.1/licenses/.hadoop-common-NOTICE 2.txt.icloudbin0 -> 175 bytes
-rw-r--r--solr-8.1.1/licenses/.hadoop-common-tests-NOTICE 2.txt.icloudbin0 -> 181 bytes
-rw-r--r--solr-8.1.1/licenses/.hadoop-hdfs-3.2.0-tests.jar 2.sha1.icloudbin0 -> 183 bytes
-rw-r--r--solr-8.1.1/licenses/.hadoop-hdfs-3.2.0.jar 2.sha1.icloudbin0 -> 177 bytes
-rw-r--r--solr-8.1.1/licenses/.hadoop-hdfs-NOTICE 2.txt.icloudbin0 -> 173 bytes
-rw-r--r--solr-8.1.1/licenses/.hadoop-hdfs-client-3.2.0.jar 2.sha1.icloudbin0 -> 184 bytes
-rw-r--r--solr-8.1.1/licenses/.hadoop-minicluster-3.2.0.jar 2.sha1.icloudbin0 -> 184 bytes
-rw-r--r--solr-8.1.1/licenses/.hadoop-minicluster-NOTICE 2.txt.icloudbin0 -> 180 bytes
-rw-r--r--solr-8.1.1/licenses/.hadoop-minikdc-3.2.0.jar 2.sha1.icloudbin0 -> 180 bytes
-rw-r--r--solr-8.1.1/licenses/.hadoop-minikdc-NOTICE 2.txt.icloudbin0 -> 176 bytes
-rw-r--r--solr-8.1.1/licenses/.hamcrest-core-1.3.jar 2.sha1.icloudbin0 -> 177 bytes
-rw-r--r--solr-8.1.1/licenses/.hamcrest-core-LICENSE-BSD 2.txt.icloudbin0 -> 181 bytes
-rw-r--r--solr-8.1.1/licenses/.hamcrest-core-NOTICE 2.txt.icloudbin0 -> 175 bytes
-rw-r--r--solr-8.1.1/licenses/.hppc-0.8.1.jar 2.sha1.icloudbin0 -> 170 bytes
-rw-r--r--solr-8.1.1/licenses/.hppc-NOTICE 2.txt.icloudbin0 -> 166 bytes
-rw-r--r--solr-8.1.1/licenses/.hsqldb-2.4.0.jar 2.sha1.icloudbin0 -> 172 bytes
-rw-r--r--solr-8.1.1/licenses/.hsqldb-LICENSE-BSD_LIKE 2.txt.icloudbin0 -> 179 bytes
-rw-r--r--solr-8.1.1/licenses/.hsqldb-NOTICE 2.txt.icloudbin0 -> 169 bytes
-rw-r--r--solr-8.1.1/licenses/.htrace-core4-4.1.0-incubating.jar 2.sha1.icloudbin0 -> 189 bytes
-rw-r--r--solr-8.1.1/licenses/.htrace-core4-NOTICE 2.txt.icloudbin0 -> 175 bytes
-rw-r--r--solr-8.1.1/licenses/.http2-common-9.4.14.v20181114.jar 2.sha1.icloudbin0 -> 189 bytes
-rw-r--r--solr-8.1.1/licenses/.http2-hpack-9.4.14.v20181114.jar 2.sha1.icloudbin0 -> 188 bytes
-rw-r--r--solr-8.1.1/licenses/.httpclient-4.5.6.jar 2.sha1.icloudbin0 -> 176 bytes
-rw-r--r--solr-8.1.1/licenses/.httpclient-NOTICE 2.txt.icloudbin0 -> 173 bytes
-rw-r--r--solr-8.1.1/licenses/.httpcore-4.4.10.jar 2.sha1.icloudbin0 -> 175 bytes
-rw-r--r--solr-8.1.1/licenses/.httpmime-4.5.6.jar 2.sha1.icloudbin0 -> 174 bytes
-rw-r--r--solr-8.1.1/licenses/.httpmime-NOTICE 2.txt.icloudbin0 -> 171 bytes
-rw-r--r--solr-8.1.1/licenses/.icu4j-62.1.jar 2.sha1.icloudbin0 -> 170 bytes
-rw-r--r--solr-8.1.1/licenses/.icu4j-LICENSE-BSD_LIKE 2.txt.icloudbin0 -> 178 bytes
-rw-r--r--solr-8.1.1/licenses/.icu4j-NOTICE 2.txt.icloudbin0 -> 167 bytes
-rw-r--r--solr-8.1.1/licenses/.isoparser-1.1.22.jar 2.sha1.icloudbin0 -> 176 bytes
-rw-r--r--solr-8.1.1/licenses/.isoparser-NOTICE 2.txt.icloudbin0 -> 172 bytes
-rw-r--r--solr-8.1.1/licenses/.jackcess-2.1.12.jar 2.sha1.icloudbin0 -> 175 bytes
-rw-r--r--solr-8.1.1/licenses/.jackcess-NOTICE 2.txt.icloudbin0 -> 170 bytes
-rw-r--r--solr-8.1.1/licenses/.jackcess-encrypt-2.1.4.jar 2.sha1.icloudbin0 -> 182 bytes
-rw-r--r--solr-8.1.1/licenses/.jackson-annotations-2.9.8.jar 2.sha1.icloudbin0 -> 185 bytes
-rw-r--r--solr-8.1.1/licenses/.jackson-annotations-LICENSE-ASL 2.txt.icloudbin0 -> 187 bytes
-rw-r--r--solr-8.1.1/licenses/.jackson-annotations-NOTICE 2.txt.icloudbin0 -> 181 bytes
-rw-r--r--solr-8.1.1/licenses/.jackson-core-2.9.8.jar 2.sha1.icloudbin0 -> 178 bytes
-rw-r--r--solr-8.1.1/licenses/.jackson-core-LICENSE-ASL 2.txt.icloudbin0 -> 180 bytes
-rw-r--r--solr-8.1.1/licenses/.jackson-core-NOTICE 2.txt.icloudbin0 -> 175 bytes
-rw-r--r--solr-8.1.1/licenses/.jackson-core-asl-NOTICE 2.txt.icloudbin0 -> 179 bytes
-rw-r--r--solr-8.1.1/licenses/.jackson-databind-2.9.8.jar 2.sha1.icloudbin0 -> 182 bytes
-rw-r--r--solr-8.1.1/licenses/.jackson-databind-LICENSE-ASL 2.txt.icloudbin0 -> 184 bytes
-rw-r--r--solr-8.1.1/licenses/.jackson-databind-NOTICE 2.txt.icloudbin0 -> 179 bytes
-rw-r--r--solr-8.1.1/licenses/.jackson-dataformat-smile-2.9.8.jar 2.sha1.icloudbin0 -> 190 bytes
-rw-r--r--solr-8.1.1/licenses/.jackson-dataformat-smile-NOTICE 2.txt.icloudbin0 -> 187 bytes
-rw-r--r--solr-8.1.1/licenses/.jackson-jq-LICENSE-ASL 2.txt.icloudbin0 -> 178 bytes
-rw-r--r--solr-8.1.1/licenses/.jackson-jq-NOTICE 2.txt.icloudbin0 -> 172 bytes
-rw-r--r--solr-8.1.1/licenses/.jackson-mapper-asl-NOTICE 2.txt.icloudbin0 -> 181 bytes
-rw-r--r--solr-8.1.1/licenses/.janino-LICENSE-BSD 2.txt.icloudbin0 -> 174 bytes
-rw-r--r--solr-8.1.1/licenses/.janino-NOTICE 2.txt.icloudbin0 -> 168 bytes
-rw-r--r--solr-8.1.1/licenses/.java-libpst-0.8.1.jar 2.sha1.icloudbin0 -> 177 bytes
-rw-r--r--solr-8.1.1/licenses/.java-libpst-NOTICE 2.txt.icloudbin0 -> 173 bytes
-rw-r--r--solr-8.1.1/licenses/.javax.mail-1.5.1.jar 2.sha1.icloudbin0 -> 176 bytes
-rw-r--r--solr-8.1.1/licenses/.javax.servlet-api-3.1.0.jar 2.sha1.icloudbin0 -> 183 bytes
-rw-r--r--solr-8.1.1/licenses/.javax.servlet-api-NOTICE 2.txt.icloudbin0 -> 179 bytes
-rw-r--r--solr-8.1.1/licenses/.jcl-over-slf4j-1.7.24.jar 2.sha1.icloudbin0 -> 181 bytes
-rw-r--r--solr-8.1.1/licenses/.jcl-over-slf4j-LICENSE-MIT 2.txt.icloudbin0 -> 182 bytes
-rw-r--r--solr-8.1.1/licenses/.jcl-over-slf4j-NOTICE 2.txt.icloudbin0 -> 177 bytes
-rw-r--r--solr-8.1.1/licenses/.jdom2-2.0.6.jar 2.sha1.icloudbin0 -> 171 bytes
-rw-r--r--solr-8.1.1/licenses/.jdom2-LICENSE-BSD_LIKE 2.txt.icloudbin0 -> 178 bytes
-rw-r--r--solr-8.1.1/licenses/.jdom2-NOTICE 2.txt.icloudbin0 -> 168 bytes
-rw-r--r--solr-8.1.1/licenses/.jempbox-1.8.16.jar 2.sha1.icloudbin0 -> 174 bytes
-rw-r--r--solr-8.1.1/licenses/.jempbox-NOTICE 2.txt.icloudbin0 -> 170 bytes
-rw-r--r--solr-8.1.1/licenses/.jersey-core-1.19.jar 2.sha1.icloudbin0 -> 176 bytes
-rw-r--r--solr-8.1.1/licenses/.jersey-server-1.19.jar 2.sha1.icloudbin0 -> 178 bytes
-rw-r--r--solr-8.1.1/licenses/.jersey-servlet-1.19.jar 2.sha1.icloudbin0 -> 179 bytes
-rw-r--r--solr-8.1.1/licenses/.jetty-alpn-client-9.4.14.v20181114.jar 2.sha1.icloudbin0 -> 194 bytes
-rw-r--r--solr-8.1.1/licenses/.jetty-alpn-java-client-9.4.14.v20181114.jar 2.sha1.icloudbin0 -> 199 bytes
-rw-r--r--solr-8.1.1/licenses/.jetty-alpn-server-9.4.14.v20181114.jar 2.sha1.icloudbin0 -> 194 bytes
-rw-r--r--solr-8.1.1/licenses/.jetty-client-9.4.14.v20181114.jar 2.sha1.icloudbin0 -> 189 bytes
-rw-r--r--solr-8.1.1/licenses/.jetty-continuation-9.4.14.v20181114.jar 2.sha1.icloudbin0 -> 195 bytes
-rw-r--r--solr-8.1.1/licenses/.jetty-deploy-9.4.14.v20181114.jar 2.sha1.icloudbin0 -> 189 bytes
-rw-r--r--solr-8.1.1/licenses/.jetty-http-9.4.14.v20181114.jar 2.sha1.icloudbin0 -> 187 bytes
-rw-r--r--solr-8.1.1/licenses/.jetty-io-9.4.14.v20181114.jar 2.sha1.icloudbin0 -> 185 bytes
-rw-r--r--solr-8.1.1/licenses/.jetty-jmx-9.4.14.v20181114.jar 2.sha1.icloudbin0 -> 186 bytes
-rw-r--r--solr-8.1.1/licenses/.jetty-rewrite-9.4.14.v20181114.jar 2.sha1.icloudbin0 -> 190 bytes
-rw-r--r--solr-8.1.1/licenses/.jetty-security-9.4.14.v20181114.jar 2.sha1.icloudbin0 -> 191 bytes
-rw-r--r--solr-8.1.1/licenses/.jetty-server-9.4.14.v20181114.jar 2.sha1.icloudbin0 -> 189 bytes
-rw-r--r--solr-8.1.1/licenses/.jetty-servlet-9.4.14.v20181114.jar 2.sha1.icloudbin0 -> 190 bytes
-rw-r--r--solr-8.1.1/licenses/.jetty-servlets-9.4.14.v20181114.jar 2.sha1.icloudbin0 -> 191 bytes
-rw-r--r--solr-8.1.1/licenses/.jetty-util-9.4.14.v20181114.jar 2.sha1.icloudbin0 -> 187 bytes
-rw-r--r--solr-8.1.1/licenses/.jetty-webapp-9.4.14.v20181114.jar 2.sha1.icloudbin0 -> 189 bytes
-rw-r--r--solr-8.1.1/licenses/.jetty-xml-9.4.14.v20181114.jar 2.sha1.icloudbin0 -> 186 bytes
-rw-r--r--solr-8.1.1/licenses/.jmatio-1.5.jar 2.sha1.icloudbin0 -> 170 bytes
-rw-r--r--solr-8.1.1/licenses/.jmatio-LICENSE-BSD 2.txt.icloudbin0 -> 174 bytes
-rw-r--r--solr-8.1.1/licenses/.jmatio-NOTICE 2.txt.icloudbin0 -> 169 bytes
-rw-r--r--solr-8.1.1/licenses/.jose4j-0.6.5.jar 2.sha1.icloudbin0 -> 172 bytes
-rw-r--r--solr-8.1.1/licenses/.jose4j-NOTICE 2.txt.icloudbin0 -> 169 bytes
-rw-r--r--solr-8.1.1/licenses/.json-path-2.4.0.jar 2.sha1.icloudbin0 -> 175 bytes
-rw-r--r--solr-8.1.1/licenses/.json-path-NOTICE 2.txt.icloudbin0 -> 171 bytes
-rw-r--r--solr-8.1.1/licenses/.jsonic-1.2.7.jar 2.sha1.icloudbin0 -> 172 bytes
-rw-r--r--solr-8.1.1/licenses/.jsonic-NOTICE 2.txt.icloudbin0 -> 168 bytes
-rw-r--r--solr-8.1.1/licenses/.jsoup-1.11.3.jar 2.sha1.icloudbin0 -> 172 bytes
-rw-r--r--solr-8.1.1/licenses/.jul-to-slf4j-1.7.24.jar 2.sha1.icloudbin0 -> 179 bytes
-rw-r--r--solr-8.1.1/licenses/.jul-to-slf4j-LICENSE-MIT 2.txt.icloudbin0 -> 180 bytes
-rw-r--r--solr-8.1.1/licenses/.jul-to-slf4j-NOTICE 2.txt.icloudbin0 -> 175 bytes
-rw-r--r--solr-8.1.1/licenses/.junit-4.12.jar 2.sha1.icloudbin0 -> 170 bytes
-rw-r--r--solr-8.1.1/licenses/.junit-NOTICE 2.txt.icloudbin0 -> 167 bytes
-rw-r--r--solr-8.1.1/licenses/.junit4-ant-2.7.2.jar 2.sha1.icloudbin0 -> 176 bytes
-rw-r--r--solr-8.1.1/licenses/.junit4-ant-NOTICE 2.txt.icloudbin0 -> 173 bytes
-rw-r--r--solr-8.1.1/licenses/.juniversalchardet-1.0.3.jar 2.sha1.icloudbin0 -> 183 bytes
-rw-r--r--solr-8.1.1/licenses/.juniversalchardet-NOTICE 2.txt.icloudbin0 -> 180 bytes
-rw-r--r--solr-8.1.1/licenses/.kerb-admin-1.0.1.jar 2.sha1.icloudbin0 -> 176 bytes
-rw-r--r--solr-8.1.1/licenses/.kerb-admin-NOTICE 2.txt.icloudbin0 -> 172 bytes
-rw-r--r--solr-8.1.1/licenses/.kerb-client-1.0.1.jar 2.sha1.icloudbin0 -> 177 bytes
-rw-r--r--solr-8.1.1/licenses/.kerb-client-NOTICE 2.txt.icloudbin0 -> 173 bytes
-rw-r--r--solr-8.1.1/licenses/.kerb-common-1.0.1.jar 2.sha1.icloudbin0 -> 177 bytes
-rw-r--r--solr-8.1.1/licenses/.kerb-common-NOTICE 2.txt.icloudbin0 -> 173 bytes
-rw-r--r--solr-8.1.1/licenses/.kerb-core-1.0.1.jar 2.sha1.icloudbin0 -> 175 bytes
-rw-r--r--solr-8.1.1/licenses/.kerb-core-NOTICE 2.txt.icloudbin0 -> 171 bytes
-rw-r--r--solr-8.1.1/licenses/.kerb-crypto-1.0.1.jar 2.sha1.icloudbin0 -> 177 bytes
-rw-r--r--solr-8.1.1/licenses/.kerb-crypto-NOTICE 2.txt.icloudbin0 -> 173 bytes
-rw-r--r--solr-8.1.1/licenses/.kerb-identity-1.0.1.jar 2.sha1.icloudbin0 -> 179 bytes
-rw-r--r--solr-8.1.1/licenses/.kerb-identity-NOTICE 2.txt.icloudbin0 -> 175 bytes
-rw-r--r--solr-8.1.1/licenses/.kerb-server-1.0.1.jar 2.sha1.icloudbin0 -> 177 bytes
-rw-r--r--solr-8.1.1/licenses/.kerb-server-NOTICE 2.txt.icloudbin0 -> 173 bytes
-rw-r--r--solr-8.1.1/licenses/.kerb-simplekdc-1.0.1.jar 2.sha1.icloudbin0 -> 180 bytes
-rw-r--r--solr-8.1.1/licenses/.kerb-simplekdc-NOTICE 2.txt.icloudbin0 -> 176 bytes
-rw-r--r--solr-8.1.1/licenses/.kerb-util-1.0.1.jar 2.sha1.icloudbin0 -> 175 bytes
-rw-r--r--solr-8.1.1/licenses/.kerb-util-NOTICE 2.txt.icloudbin0 -> 171 bytes
-rw-r--r--solr-8.1.1/licenses/.kerby-asn1-1.0.1.jar 2.sha1.icloudbin0 -> 176 bytes
-rw-r--r--solr-8.1.1/licenses/.kerby-asn1-NOTICE 2.txt.icloudbin0 -> 172 bytes
-rw-r--r--solr-8.1.1/licenses/.kerby-config-1.0.1.jar 2.sha1.icloudbin0 -> 178 bytes
-rw-r--r--solr-8.1.1/licenses/.kerby-config-NOTICE 2.txt.icloudbin0 -> 174 bytes
-rw-r--r--solr-8.1.1/licenses/.kerby-kdc-1.0.1.jar 2.sha1.icloudbin0 -> 175 bytes
-rw-r--r--solr-8.1.1/licenses/.kerby-kdc-NOTICE 2.txt.icloudbin0 -> 171 bytes
-rw-r--r--solr-8.1.1/licenses/.kerby-pkix-1.0.1.jar 2.sha1.icloudbin0 -> 176 bytes
-rw-r--r--solr-8.1.1/licenses/.kerby-pkix-NOTICE 2.txt.icloudbin0 -> 172 bytes
-rw-r--r--solr-8.1.1/licenses/.kerby-util-1.0.1.jar 2.sha1.icloudbin0 -> 176 bytes
-rw-r--r--solr-8.1.1/licenses/.kerby-util-NOTICE 2.txt.icloudbin0 -> 172 bytes
-rw-r--r--solr-8.1.1/licenses/.langdetect-1.1-20120112.jar 2.sha1.icloudbin0 -> 183 bytes
-rw-r--r--solr-8.1.1/licenses/.langdetect-LICENSE-ASL 2.txt.icloudbin0 -> 178 bytes
-rw-r--r--solr-8.1.1/licenses/.langdetect-NOTICE 2.txt.icloudbin0 -> 172 bytes
-rw-r--r--solr-8.1.1/licenses/.log4j-1.2-api-2.11.2.jar 2.sha1.icloudbin0 -> 180 bytes
-rw-r--r--solr-8.1.1/licenses/.log4j-NOTICE 2.txt.icloudbin0 -> 167 bytes
-rw-r--r--solr-8.1.1/licenses/.log4j-api-2.11.2.jar 2.sha1.icloudbin0 -> 176 bytes
-rw-r--r--solr-8.1.1/licenses/.log4j-api-NOTICE 2.txt.icloudbin0 -> 172 bytes
-rw-r--r--solr-8.1.1/licenses/.log4j-core-2.11.2.jar 2.sha1.icloudbin0 -> 177 bytes
-rw-r--r--solr-8.1.1/licenses/.log4j-core-NOTICE 2.txt.icloudbin0 -> 173 bytes
-rw-r--r--solr-8.1.1/licenses/.log4j-slf4j-NOTICE 2.txt.icloudbin0 -> 174 bytes
-rw-r--r--solr-8.1.1/licenses/.log4j-slf4j-impl-2.11.2.jar 2.sha1.icloudbin0 -> 183 bytes
-rw-r--r--solr-8.1.1/licenses/.log4j-web-2.11.2.jar 2.sha1.icloudbin0 -> 176 bytes
-rw-r--r--solr-8.1.1/licenses/.log4j-web-NOTICE 2.txt.icloudbin0 -> 172 bytes
-rw-r--r--solr-8.1.1/licenses/.metadata-extractor-2.11.0.jar 2.sha1.icloudbin0 -> 185 bytes
-rw-r--r--solr-8.1.1/licenses/.metadata-extractor-LICENSE-PD 2.txt.icloudbin0 -> 184 bytes
-rw-r--r--solr-8.1.1/licenses/.metrics-core-4.0.5.jar 2.sha1.icloudbin0 -> 178 bytes
-rw-r--r--solr-8.1.1/licenses/.metrics-core-NOTICE 2.txt.icloudbin0 -> 175 bytes
-rw-r--r--solr-8.1.1/licenses/.metrics-graphite-4.0.5.jar 2.sha1.icloudbin0 -> 182 bytes
-rw-r--r--solr-8.1.1/licenses/.metrics-graphite-NOTICE 2.txt.icloudbin0 -> 179 bytes
-rw-r--r--solr-8.1.1/licenses/.metrics-jetty-NOTICE 2.txt.icloudbin0 -> 176 bytes
-rw-r--r--solr-8.1.1/licenses/.metrics-jetty9-4.0.5.jar 2.sha1.icloudbin0 -> 180 bytes
-rw-r--r--solr-8.1.1/licenses/.metrics-jmx-4.0.5.jar 2.sha1.icloudbin0 -> 177 bytes
-rw-r--r--solr-8.1.1/licenses/.metrics-jmx-NOTICE 2.txt.icloudbin0 -> 174 bytes
-rw-r--r--solr-8.1.1/licenses/.metrics-json-NOTICE 2.txt.icloudbin0 -> 175 bytes
-rw-r--r--solr-8.1.1/licenses/.metrics-jvm-4.0.5.jar 2.sha1.icloudbin0 -> 177 bytes
-rw-r--r--solr-8.1.1/licenses/.metrics-jvm-NOTICE 2.txt.icloudbin0 -> 174 bytes
-rw-r--r--solr-8.1.1/licenses/.metrics-servlets-NOTICE 2.txt.icloudbin0 -> 179 bytes
-rw-r--r--solr-8.1.1/licenses/.mina-core-NOTICE 2.txt.icloudbin0 -> 171 bytes
-rw-r--r--solr-8.1.1/licenses/.mockito-core-2.23.4.jar 2.sha1.icloudbin0 -> 179 bytes
-rw-r--r--solr-8.1.1/licenses/.mockito-core-LICENSE-MIT 2.txt.icloudbin0 -> 180 bytes
-rw-r--r--solr-8.1.1/licenses/.morfologik-fsa-2.1.5.jar 2.sha1.icloudbin0 -> 180 bytes
-rw-r--r--solr-8.1.1/licenses/.morfologik-fsa-LICENSE-BSD 2.txt.icloudbin0 -> 182 bytes
-rw-r--r--solr-8.1.1/licenses/.morfologik-fsa-NOTICE 2.txt.icloudbin0 -> 176 bytes
-rw-r--r--solr-8.1.1/licenses/.morfologik-polish-2.1.5.jar 2.sha1.icloudbin0 -> 183 bytes
-rw-r--r--solr-8.1.1/licenses/.morfologik-polish-LICENSE-BSD 2.txt.icloudbin0 -> 185 bytes
-rw-r--r--solr-8.1.1/licenses/.morfologik-polish-NOTICE 2.txt.icloudbin0 -> 179 bytes
-rw-r--r--solr-8.1.1/licenses/.morfologik-stemming-2.1.5.jar 2.sha1.icloudbin0 -> 185 bytes
-rw-r--r--solr-8.1.1/licenses/.morfologik-stemming-LICENSE-BSD 2.txt.icloudbin0 -> 187 bytes
-rw-r--r--solr-8.1.1/licenses/.morfologik-stemming-NOTICE 2.txt.icloudbin0 -> 181 bytes
-rw-r--r--solr-8.1.1/licenses/.netty-all-4.0.52.Final.jar 2.sha1.icloudbin0 -> 182 bytes
-rw-r--r--solr-8.1.1/licenses/.noggit-0.8.jar 2.sha1.icloudbin0 -> 170 bytes
-rw-r--r--solr-8.1.1/licenses/.noggit-NOTICE 2.txt.icloudbin0 -> 168 bytes
-rw-r--r--solr-8.1.1/licenses/.objenesis-2.6.jar 2.sha1.icloudbin0 -> 173 bytes
-rw-r--r--solr-8.1.1/licenses/.objenesis-NOTICE 2.txt.icloudbin0 -> 172 bytes
-rw-r--r--solr-8.1.1/licenses/.opennlp-tools-1.9.1.jar 2.sha1.icloudbin0 -> 179 bytes
-rw-r--r--solr-8.1.1/licenses/.opennlp-tools-NOTICE 2.txt.icloudbin0 -> 175 bytes
-rw-r--r--solr-8.1.1/licenses/.org.restlet-2.3.0.jar 2.sha1.icloudbin0 -> 177 bytes
-rw-r--r--solr-8.1.1/licenses/.org.restlet-NOTICE 2.txt.icloudbin0 -> 173 bytes
-rw-r--r--solr-8.1.1/licenses/.org.restlet.ext.servlet-2.3.0.jar 2.sha1.icloudbin0 -> 189 bytes
-rw-r--r--solr-8.1.1/licenses/.org.restlet.ext.servlet-NOTICE 2.txt.icloudbin0 -> 185 bytes
-rw-r--r--solr-8.1.1/licenses/.parso-2.0.9.jar 2.sha1.icloudbin0 -> 171 bytes
-rw-r--r--solr-8.1.1/licenses/.pdfbox-2.0.12.jar 2.sha1.icloudbin0 -> 173 bytes
-rw-r--r--solr-8.1.1/licenses/.pdfbox-NOTICE 2.txt.icloudbin0 -> 169 bytes
-rw-r--r--solr-8.1.1/licenses/.pdfbox-tools-2.0.12.jar 2.sha1.icloudbin0 -> 179 bytes
-rw-r--r--solr-8.1.1/licenses/.pdfbox-tools-NOTICE 2.txt.icloudbin0 -> 175 bytes
-rw-r--r--solr-8.1.1/licenses/.poi-4.0.0.jar 2.sha1.icloudbin0 -> 169 bytes
-rw-r--r--solr-8.1.1/licenses/.poi-NOTICE 2.txt.icloudbin0 -> 166 bytes
-rw-r--r--solr-8.1.1/licenses/.poi-ooxml-4.0.0.jar 2.sha1.icloudbin0 -> 175 bytes
-rw-r--r--solr-8.1.1/licenses/.poi-ooxml-NOTICE 2.txt.icloudbin0 -> 172 bytes
-rw-r--r--solr-8.1.1/licenses/.poi-ooxml-schemas-4.0.0.jar 2.sha1.icloudbin0 -> 183 bytes
-rw-r--r--solr-8.1.1/licenses/.poi-ooxml-schemas-NOTICE 2.txt.icloudbin0 -> 180 bytes
-rw-r--r--solr-8.1.1/licenses/.poi-scratchpad-4.0.0.jar 2.sha1.icloudbin0 -> 180 bytes
-rw-r--r--solr-8.1.1/licenses/.poi-scratchpad-NOTICE 2.txt.icloudbin0 -> 177 bytes
-rw-r--r--solr-8.1.1/licenses/.presto-parser-NOTICE 2.txt.icloudbin0 -> 175 bytes
-rw-r--r--solr-8.1.1/licenses/.protobuf-java-3.6.1.jar 2.sha1.icloudbin0 -> 179 bytes
-rw-r--r--solr-8.1.1/licenses/.protobuf-java-LICENSE-BSD 2.txt.icloudbin0 -> 181 bytes
-rw-r--r--solr-8.1.1/licenses/.protobuf-java-NOTICE 2.txt.icloudbin0 -> 175 bytes
-rw-r--r--solr-8.1.1/licenses/.randomizedtesting-runner-2.7.2.jar 2.sha1.icloudbin0 -> 190 bytes
-rw-r--r--solr-8.1.1/licenses/.randomizedtesting-runner-NOTICE 2.txt.icloudbin0 -> 187 bytes
-rw-r--r--solr-8.1.1/licenses/.re2j-1.2.jar 2.sha1.icloudbin0 -> 168 bytes
-rw-r--r--solr-8.1.1/licenses/.re2j-LICENSE-BSD_LIKE 2.txt.icloudbin0 -> 177 bytes
-rw-r--r--solr-8.1.1/licenses/.re2j-NOTICE 2.txt.icloudbin0 -> 166 bytes
-rw-r--r--solr-8.1.1/licenses/.rome-1.5.1.jar 2.sha1.icloudbin0 -> 170 bytes
-rw-r--r--solr-8.1.1/licenses/.rome-LICENSE-ASL 2.txt.icloudbin0 -> 172 bytes
-rw-r--r--solr-8.1.1/licenses/.rome-NOTICE 2.txt.icloudbin0 -> 166 bytes
-rw-r--r--solr-8.1.1/licenses/.rome-utils-1.5.1.jar 2.sha1.icloudbin0 -> 176 bytes
-rw-r--r--solr-8.1.1/licenses/.rome-utils-LICENSE-ASL 2.txt.icloudbin0 -> 178 bytes
-rw-r--r--solr-8.1.1/licenses/.rome-utils-NOTICE 2.txt.icloudbin0 -> 172 bytes
-rw-r--r--solr-8.1.1/licenses/.rrd4j-3.5.jar 2.sha1.icloudbin0 -> 169 bytes
-rw-r--r--solr-8.1.1/licenses/.rrd4j-NOTICE 2.txt.icloudbin0 -> 167 bytes
-rw-r--r--solr-8.1.1/licenses/.servlet-api-NOTICE 2.txt.icloudbin0 -> 173 bytes
-rw-r--r--solr-8.1.1/licenses/.simple-xml-2.7.1.jar 2.sha1.icloudbin0 -> 176 bytes
-rw-r--r--solr-8.1.1/licenses/.simple-xml-NOTICE 2.txt.icloudbin0 -> 172 bytes
-rw-r--r--solr-8.1.1/licenses/.simpleclient-0.2.0.jar 2.sha1.icloudbin0 -> 178 bytes
-rw-r--r--solr-8.1.1/licenses/.simpleclient-NOTICE 2.txt.icloudbin0 -> 175 bytes
-rw-r--r--solr-8.1.1/licenses/.simpleclient_common-0.2.0.jar 2.sha1.icloudbin0 -> 185 bytes
-rw-r--r--solr-8.1.1/licenses/.simpleclient_common-NOTICE 2.txt.icloudbin0 -> 182 bytes
-rw-r--r--solr-8.1.1/licenses/.simpleclient_httpserver-0.2.0.jar 2.sha1.icloudbin0 -> 189 bytes
-rw-r--r--solr-8.1.1/licenses/.simpleclient_httpserver-NOTICE 2.txt.icloudbin0 -> 186 bytes
-rw-r--r--solr-8.1.1/licenses/.slf4j-LICENSE-MIT 2.txt.icloudbin0 -> 173 bytes
-rw-r--r--solr-8.1.1/licenses/.slf4j-NOTICE 2.txt.icloudbin0 -> 168 bytes
-rw-r--r--solr-8.1.1/licenses/.slf4j-api-1.7.24.jar 2.sha1.icloudbin0 -> 176 bytes
-rw-r--r--solr-8.1.1/licenses/.slf4j-simple-1.7.24.jar 2.sha1.icloudbin0 -> 179 bytes
-rw-r--r--solr-8.1.1/licenses/.slice-NOTICE 2.txt.icloudbin0 -> 167 bytes
-rw-r--r--solr-8.1.1/licenses/.spatial4j-0.7.jar 2.sha1.icloudbin0 -> 173 bytes
-rw-r--r--solr-8.1.1/licenses/.start.jar 2.sha1.icloudbin0 -> 165 bytes
-rw-r--r--solr-8.1.1/licenses/.stax2-api-3.1.4.jar 2.sha1.icloudbin0 -> 175 bytes
-rw-r--r--solr-8.1.1/licenses/.stax2-api-LICENSE-BSD 2.txt.icloudbin0 -> 177 bytes
-rw-r--r--solr-8.1.1/licenses/.stax2-api-NOTICE 2.txt.icloudbin0 -> 172 bytes
-rw-r--r--solr-8.1.1/licenses/.t-digest-3.1.jar 2.sha1.icloudbin0 -> 172 bytes
-rw-r--r--solr-8.1.1/licenses/.t-digest-NOTICE 2.txt.icloudbin0 -> 170 bytes
-rw-r--r--solr-8.1.1/licenses/.tagsoup-1.2.1.jar 2.sha1.icloudbin0 -> 173 bytes
-rw-r--r--solr-8.1.1/licenses/.tagsoup-NOTICE 2.txt.icloudbin0 -> 169 bytes
-rw-r--r--solr-8.1.1/licenses/.tika-core-1.19.1.jar 2.sha1.icloudbin0 -> 176 bytes
-rw-r--r--solr-8.1.1/licenses/.tika-core-NOTICE 2.txt.icloudbin0 -> 172 bytes
-rw-r--r--solr-8.1.1/licenses/.tika-java7-1.19.1.jar 2.sha1.icloudbin0 -> 177 bytes
-rw-r--r--solr-8.1.1/licenses/.tika-java7-NOTICE 2.txt.icloudbin0 -> 173 bytes
-rw-r--r--solr-8.1.1/licenses/.tika-parsers-1.19.1.jar 2.sha1.icloudbin0 -> 179 bytes
-rw-r--r--solr-8.1.1/licenses/.tika-parsers-NOTICE 2.txt.icloudbin0 -> 175 bytes
-rw-r--r--solr-8.1.1/licenses/.tika-xmp-NOTICE 2.txt.icloudbin0 -> 171 bytes
-rw-r--r--solr-8.1.1/licenses/.velocity-engine-core-2.0.jar 2.sha1.icloudbin0 -> 184 bytes
-rw-r--r--solr-8.1.1/licenses/.velocity-engine-core-NOTICE 2.txt.icloudbin0 -> 182 bytes
-rw-r--r--solr-8.1.1/licenses/.velocity-tools-generic-3.0.jar 2.sha1.icloudbin0 -> 186 bytes
-rw-r--r--solr-8.1.1/licenses/.velocity-tools-generic-NOTICE 2.txt.icloudbin0 -> 185 bytes
-rw-r--r--solr-8.1.1/licenses/.velocity-tools-view-3.0.jar 2.sha1.icloudbin0 -> 183 bytes
-rw-r--r--solr-8.1.1/licenses/.velocity-tools-view-NOTICE 2.txt.icloudbin0 -> 182 bytes
-rw-r--r--solr-8.1.1/licenses/.velocity-tools-view-jsp-3.0.jar 2.sha1.icloudbin0 -> 187 bytes
-rw-r--r--solr-8.1.1/licenses/.velocity-tools-view-jsp-NOTICE 2.txt.icloudbin0 -> 186 bytes
-rw-r--r--solr-8.1.1/licenses/.vorbis-java-core-0.8.jar 2.sha1.icloudbin0 -> 180 bytes
-rw-r--r--solr-8.1.1/licenses/.vorbis-java-core-LICENSE-BSD_LIKE 2.txt.icloudbin0 -> 189 bytes
-rw-r--r--solr-8.1.1/licenses/.vorbis-java-core-NOTICE 2.txt.icloudbin0 -> 179 bytes
-rw-r--r--solr-8.1.1/licenses/.vorbis-java-tika-0.8.jar 2.sha1.icloudbin0 -> 180 bytes
-rw-r--r--solr-8.1.1/licenses/.vorbis-java-tika-LICENSE-BSD_LIKE 2.txt.icloudbin0 -> 189 bytes
-rw-r--r--solr-8.1.1/licenses/.vorbis-java-tika-NOTICE 2.txt.icloudbin0 -> 179 bytes
-rw-r--r--solr-8.1.1/licenses/.woodstox-core-asl-4.4.1.jar 2.sha1.icloudbin0 -> 183 bytes
-rw-r--r--solr-8.1.1/licenses/.woodstox-core-asl-NOTICE 2.txt.icloudbin0 -> 180 bytes
-rw-r--r--solr-8.1.1/licenses/.xercesImpl-2.9.1.jar 2.sha1.icloudbin0 -> 176 bytes
-rw-r--r--solr-8.1.1/licenses/.xercesImpl-LICENSE-ASL 2.txt.icloudbin0 -> 178 bytes
-rw-r--r--solr-8.1.1/licenses/.xercesImpl-NOTICE 2.txt.icloudbin0 -> 172 bytes
-rw-r--r--solr-8.1.1/licenses/.xmlbeans-3.0.1.jar 2.sha1.icloudbin0 -> 174 bytes
-rw-r--r--solr-8.1.1/licenses/.xmlbeans-NOTICE 2.txt.icloudbin0 -> 171 bytes
-rw-r--r--solr-8.1.1/licenses/.xmpcore-5.1.3.jar 2.sha1.icloudbin0 -> 173 bytes
-rw-r--r--solr-8.1.1/licenses/.xmpcore-LICENSE-BSD 2.txt.icloudbin0 -> 175 bytes
-rw-r--r--solr-8.1.1/licenses/.xmpcore-NOTICE 2.txt.icloudbin0 -> 169 bytes
-rw-r--r--solr-8.1.1/licenses/.xz-1.8.jar 2.sha1.icloudbin0 -> 166 bytes
-rw-r--r--solr-8.1.1/licenses/.xz-LICENSE-PD 2.txt.icloudbin0 -> 169 bytes
-rw-r--r--solr-8.1.1/licenses/.xz-NOTICE 2.txt.icloudbin0 -> 165 bytes
-rw-r--r--solr-8.1.1/licenses/.zookeeper-NOTICE 2.txt.icloudbin0 -> 171 bytes
-rw-r--r--solr/conf/.params 2.json.icloudbin0 -> 161 bytes
-rw-r--r--solr/conf/.protwords 2.txt.icloudbin0 -> 165 bytes
-rw-r--r--solr/conf/.schema 2.xml.icloudbin0 -> 160 bytes
-rw-r--r--solr/conf/.stopwords 2.txt.icloudbin0 -> 165 bytes
-rw-r--r--solr/conf/.synonyms 2.txt.icloudbin0 -> 162 bytes
-rw-r--r--solr/conf/lang/.contractions_ca 2.txt.icloudbin0 -> 170 bytes
-rw-r--r--solr/conf/lang/.contractions_fr 2.txt.icloudbin0 -> 170 bytes
-rw-r--r--solr/conf/lang/.hyphenations_ga 2.txt.icloudbin0 -> 170 bytes
-rw-r--r--solr/conf/lang/.stemdict_nl 2.txt.icloudbin0 -> 166 bytes
-rw-r--r--solr/conf/lang/.stopwords_ar 2.txt.icloudbin0 -> 168 bytes
-rw-r--r--solr/conf/lang/.stopwords_ca 2.txt.icloudbin0 -> 168 bytes
-rw-r--r--solr/conf/lang/.stopwords_cz 2.txt.icloudbin0 -> 168 bytes
-rw-r--r--solr/conf/lang/.stopwords_el 2.txt.icloudbin0 -> 168 bytes
-rw-r--r--solr/conf/lang/.stopwords_en 2.txt.icloudbin0 -> 168 bytes
-rw-r--r--solr/conf/lang/.stopwords_eu 2.txt.icloudbin0 -> 168 bytes
-rw-r--r--solr/conf/lang/.stopwords_fa 2.txt.icloudbin0 -> 168 bytes
-rw-r--r--solr/conf/lang/.stopwords_hi 2.txt.icloudbin0 -> 168 bytes
-rw-r--r--solr/conf/lang/.stopwords_id 2.txt.icloudbin0 -> 168 bytes
-rw-r--r--solr/conf/lang/.stopwords_ja 2.txt.icloudbin0 -> 168 bytes
-rw-r--r--solr/conf/lang/.stopwords_lv 2.txt.icloudbin0 -> 168 bytes
-rw-r--r--solr/conf/lang/.stopwords_ro 2.txt.icloudbin0 -> 168 bytes
-rw-r--r--solr/conf/lang/.stopwords_tr 2.txt.icloudbin0 -> 168 bytes
-rw-r--r--solr/conf/lang/.userdict_ja 2.txt.icloudbin0 -> 167 bytes
-rw-r--r--src/client/.Network 2.ts.icloudbin0 -> 160 bytes
-rw-r--r--src/client/.goldenLayout.d 2.ts.icloudbin0 -> 168 bytes
-rw-r--r--src/client/documents/Documents.ts3
-rw-r--r--src/client/util/RichTextSchema.tsx38
-rw-r--r--src/client/util/SearchUtil.ts7
-rw-r--r--src/client/util/TooltipTextMenu.scss571
-rw-r--r--src/client/util/TooltipTextMenu.tsx1151
-rw-r--r--src/client/views/DocComponent.tsx2
-rw-r--r--src/client/views/DocumentButtonBar.tsx26
-rw-r--r--src/client/views/DocumentDecorations.tsx15
-rw-r--r--src/client/views/animationtimeline/Track.tsx5
-rw-r--r--src/client/views/collections/CollectionSchemaView.tsx1
-rw-r--r--src/client/views/collections/CollectionStackingView.tsx1
-rw-r--r--src/client/views/collections/CollectionTreeView.tsx13
-rw-r--r--src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx4
-rw-r--r--src/client/views/nodes/ContentFittingDocumentView.tsx3
-rw-r--r--src/client/views/nodes/DocumentView.tsx23
-rw-r--r--src/client/views/nodes/FontIconBox.tsx2
-rw-r--r--src/client/views/nodes/FormattedTextBox.scss34
-rw-r--r--src/client/views/nodes/FormattedTextBox.tsx78
-rw-r--r--src/client/views/nodes/FormattedTextBoxComment.scss1
-rw-r--r--src/client/views/nodes/FormattedTextBoxComment.tsx102
-rw-r--r--src/client/views/presentationview/PresElementBox.tsx1
-rw-r--r--src/client/views/search/FilterBox.tsx6
-rw-r--r--src/new_fields/Doc.ts5
-rw-r--r--src/new_fields/RichTextField.ts10
-rw-r--r--src/new_fields/RichTextUtils.ts2
-rw-r--r--src/new_fields/SchemaHeaderField.ts11
-rw-r--r--src/new_fields/documentSchemas.ts3
-rw-r--r--src/scraping/buxton/source/.Bill_Notes_NewO.docx.icloudbin172 -> 0 bytes
-rw-r--r--src/scraping/buxton/source/.Bill_Notes_OLPC.docx.icloudbin172 -> 0 bytes
-rw-r--r--src/server/authentication/models/current_user_utils.ts2
-rw-r--r--src/server/index.ts1
439 files changed, 1374 insertions, 752 deletions
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 85e1cd120..0b45c3f46 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -10,6 +10,6 @@
"editor.detectIndentation": false,
"typescript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets": false,
"typescript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces": true,
- "workbench.colorCustomizations": {},
- "search.usePCRE2": true
+ "search.usePCRE2": true,
+ "typescript.tsdk": "node_modules/typescript/lib"
} \ No newline at end of file
diff --git a/package.json b/package.json
index 252104435..e658f8630 100644
--- a/package.json
+++ b/package.json
@@ -222,6 +222,7 @@
"typescript-collections": "^1.3.2",
"url-loader": "^1.1.2",
"uuid": "^3.3.2",
+ "wikijs": "^6.0.1",
"words-to-numbers": "^1.5.1",
"xoauth2": "^1.2.0",
"youtube": "^0.1.0"
diff --git a/solr-8.1.1/bin/.install_solr_service 2.sh.icloud b/solr-8.1.1/bin/.install_solr_service 2.sh.icloud
new file mode 100644
index 000000000..408e2667e
--- /dev/null
+++ b/solr-8.1.1/bin/.install_solr_service 2.sh.icloud
Binary files differ
diff --git a/solr-8.1.1/bin/.oom_solr 2.sh.icloud b/solr-8.1.1/bin/.oom_solr 2.sh.icloud
new file mode 100644
index 000000000..d0a5abe9e
--- /dev/null
+++ b/solr-8.1.1/bin/.oom_solr 2.sh.icloud
Binary files differ
diff --git a/solr-8.1.1/bin/.solr.in 2.cmd.icloud b/solr-8.1.1/bin/.solr.in 2.cmd.icloud
new file mode 100644
index 000000000..bfe3ba860
--- /dev/null
+++ b/solr-8.1.1/bin/.solr.in 2.cmd.icloud
Binary files differ
diff --git a/solr-8.1.1/example/.README 2.txt.icloud b/solr-8.1.1/example/.README 2.txt.icloud
new file mode 100644
index 000000000..39ca6d308
--- /dev/null
+++ b/solr-8.1.1/example/.README 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.activation-1.1.1.jar 2.sha1.icloud b/solr-8.1.1/licenses/.activation-1.1.1.jar 2.sha1.icloud
new file mode 100644
index 000000000..f9b56a04c
--- /dev/null
+++ b/solr-8.1.1/licenses/.activation-1.1.1.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.android-json-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.android-json-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..bd09ff822
--- /dev/null
+++ b/solr-8.1.1/licenses/.android-json-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.ant-1.8.2.jar 2.sha1.icloud b/solr-8.1.1/licenses/.ant-1.8.2.jar 2.sha1.icloud
new file mode 100644
index 000000000..6a11ce9da
--- /dev/null
+++ b/solr-8.1.1/licenses/.ant-1.8.2.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.ant-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.ant-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..cdb3009b8
--- /dev/null
+++ b/solr-8.1.1/licenses/.ant-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.antlr4-runtime-LICENSE-BSD 2.txt.icloud b/solr-8.1.1/licenses/.antlr4-runtime-LICENSE-BSD 2.txt.icloud
new file mode 100644
index 000000000..2f552ad67
--- /dev/null
+++ b/solr-8.1.1/licenses/.antlr4-runtime-LICENSE-BSD 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.antlr4-runtime-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.antlr4-runtime-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..9cc8bcf45
--- /dev/null
+++ b/solr-8.1.1/licenses/.antlr4-runtime-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.apache-mime4j-core-0.8.2.jar 2.sha1.icloud b/solr-8.1.1/licenses/.apache-mime4j-core-0.8.2.jar 2.sha1.icloud
new file mode 100644
index 000000000..6c6f1c8df
--- /dev/null
+++ b/solr-8.1.1/licenses/.apache-mime4j-core-0.8.2.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.apache-mime4j-core-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.apache-mime4j-core-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..45dd4a5e4
--- /dev/null
+++ b/solr-8.1.1/licenses/.apache-mime4j-core-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.apache-mime4j-dom-0.8.2.jar 2.sha1.icloud b/solr-8.1.1/licenses/.apache-mime4j-dom-0.8.2.jar 2.sha1.icloud
new file mode 100644
index 000000000..ef0abbc1a
--- /dev/null
+++ b/solr-8.1.1/licenses/.apache-mime4j-dom-0.8.2.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.apache-mime4j-dom-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.apache-mime4j-dom-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..066d1ecb7
--- /dev/null
+++ b/solr-8.1.1/licenses/.apache-mime4j-dom-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.argparse4j-0.8.1.jar 2.sha1.icloud b/solr-8.1.1/licenses/.argparse4j-0.8.1.jar 2.sha1.icloud
new file mode 100644
index 000000000..c2817c5e4
--- /dev/null
+++ b/solr-8.1.1/licenses/.argparse4j-0.8.1.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.argparse4j-LICENSE-MIT 2.txt.icloud b/solr-8.1.1/licenses/.argparse4j-LICENSE-MIT 2.txt.icloud
new file mode 100644
index 000000000..42d1c84eb
--- /dev/null
+++ b/solr-8.1.1/licenses/.argparse4j-LICENSE-MIT 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.asciidoctor-ant-1.6.0-alpha.5.jar 2.sha1.icloud b/solr-8.1.1/licenses/.asciidoctor-ant-1.6.0-alpha.5.jar 2.sha1.icloud
new file mode 100644
index 000000000..b6d2ec453
--- /dev/null
+++ b/solr-8.1.1/licenses/.asciidoctor-ant-1.6.0-alpha.5.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.asciidoctor-ant-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.asciidoctor-ant-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..29b21480c
--- /dev/null
+++ b/solr-8.1.1/licenses/.asciidoctor-ant-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.asm-5.1.jar 2.sha1.icloud b/solr-8.1.1/licenses/.asm-5.1.jar 2.sha1.icloud
new file mode 100644
index 000000000..944c17ef0
--- /dev/null
+++ b/solr-8.1.1/licenses/.asm-5.1.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.asm-LICENSE-BSD 2.txt.icloud b/solr-8.1.1/licenses/.asm-LICENSE-BSD 2.txt.icloud
new file mode 100644
index 000000000..7eea3553c
--- /dev/null
+++ b/solr-8.1.1/licenses/.asm-LICENSE-BSD 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.asm-LICENSE-BSD_LIKE 2.txt.icloud b/solr-8.1.1/licenses/.asm-LICENSE-BSD_LIKE 2.txt.icloud
new file mode 100644
index 000000000..22a363d50
--- /dev/null
+++ b/solr-8.1.1/licenses/.asm-LICENSE-BSD_LIKE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.asm-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.asm-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..01a17e261
--- /dev/null
+++ b/solr-8.1.1/licenses/.asm-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.asm-commons-5.1.jar 2.sha1.icloud b/solr-8.1.1/licenses/.asm-commons-5.1.jar 2.sha1.icloud
new file mode 100644
index 000000000..9257d1ee2
--- /dev/null
+++ b/solr-8.1.1/licenses/.asm-commons-5.1.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.asm-commons-LICENSE-BSD_LIKE 2.txt.icloud b/solr-8.1.1/licenses/.asm-commons-LICENSE-BSD_LIKE 2.txt.icloud
new file mode 100644
index 000000000..c20c2bab8
--- /dev/null
+++ b/solr-8.1.1/licenses/.asm-commons-LICENSE-BSD_LIKE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.asm-commons-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.asm-commons-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..1679638f5
--- /dev/null
+++ b/solr-8.1.1/licenses/.asm-commons-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.aspectjrt-1.8.0.jar 2.sha1.icloud b/solr-8.1.1/licenses/.aspectjrt-1.8.0.jar 2.sha1.icloud
new file mode 100644
index 000000000..5fe89fcc1
--- /dev/null
+++ b/solr-8.1.1/licenses/.aspectjrt-1.8.0.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.attributes-binder-1.3.3.jar 2.sha1.icloud b/solr-8.1.1/licenses/.attributes-binder-1.3.3.jar 2.sha1.icloud
new file mode 100644
index 000000000..33e0f06a0
--- /dev/null
+++ b/solr-8.1.1/licenses/.attributes-binder-1.3.3.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.attributes-binder-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.attributes-binder-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..ca49f2eca
--- /dev/null
+++ b/solr-8.1.1/licenses/.attributes-binder-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.avatica-core-1.13.0.jar 2.sha1.icloud b/solr-8.1.1/licenses/.avatica-core-1.13.0.jar 2.sha1.icloud
new file mode 100644
index 000000000..6693eb933
--- /dev/null
+++ b/solr-8.1.1/licenses/.avatica-core-1.13.0.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.avatica-core-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.avatica-core-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..a183cf44b
--- /dev/null
+++ b/solr-8.1.1/licenses/.avatica-core-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.bcmail-LICENSE-BSD_LIKE 2.txt.icloud b/solr-8.1.1/licenses/.bcmail-LICENSE-BSD_LIKE 2.txt.icloud
new file mode 100644
index 000000000..adabd118d
--- /dev/null
+++ b/solr-8.1.1/licenses/.bcmail-LICENSE-BSD_LIKE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.bcmail-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.bcmail-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..3273d96f5
--- /dev/null
+++ b/solr-8.1.1/licenses/.bcmail-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.bcmail-jdk15on-1.60.jar 2.sha1.icloud b/solr-8.1.1/licenses/.bcmail-jdk15on-1.60.jar 2.sha1.icloud
new file mode 100644
index 000000000..f5226df0f
--- /dev/null
+++ b/solr-8.1.1/licenses/.bcmail-jdk15on-1.60.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.bcpkix-jdk15on-1.60.jar 2.sha1.icloud b/solr-8.1.1/licenses/.bcpkix-jdk15on-1.60.jar 2.sha1.icloud
new file mode 100644
index 000000000..b2a4f1cbf
--- /dev/null
+++ b/solr-8.1.1/licenses/.bcpkix-jdk15on-1.60.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.bcpkix-jdk15on-LICENSE-BSD_LIKE 2.txt.icloud b/solr-8.1.1/licenses/.bcpkix-jdk15on-LICENSE-BSD_LIKE 2.txt.icloud
new file mode 100644
index 000000000..39f686627
--- /dev/null
+++ b/solr-8.1.1/licenses/.bcpkix-jdk15on-LICENSE-BSD_LIKE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.bcpkix-jdk15on-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.bcpkix-jdk15on-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..8adfc769b
--- /dev/null
+++ b/solr-8.1.1/licenses/.bcpkix-jdk15on-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.bcprov-LICENSE-BSD_LIKE 2.txt.icloud b/solr-8.1.1/licenses/.bcprov-LICENSE-BSD_LIKE 2.txt.icloud
new file mode 100644
index 000000000..b3e5e9b7b
--- /dev/null
+++ b/solr-8.1.1/licenses/.bcprov-LICENSE-BSD_LIKE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.bcprov-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.bcprov-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..1fda62c1f
--- /dev/null
+++ b/solr-8.1.1/licenses/.bcprov-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.bcprov-jdk15on-1.60.jar 2.sha1.icloud b/solr-8.1.1/licenses/.bcprov-jdk15on-1.60.jar 2.sha1.icloud
new file mode 100644
index 000000000..5019f5e45
--- /dev/null
+++ b/solr-8.1.1/licenses/.bcprov-jdk15on-1.60.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.boilerpipe-1.1.0.jar 2.sha1.icloud b/solr-8.1.1/licenses/.boilerpipe-1.1.0.jar 2.sha1.icloud
new file mode 100644
index 000000000..de030fe8e
--- /dev/null
+++ b/solr-8.1.1/licenses/.boilerpipe-1.1.0.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.boilerpipe-LICENSE-ASL 2.txt.icloud b/solr-8.1.1/licenses/.boilerpipe-LICENSE-ASL 2.txt.icloud
new file mode 100644
index 000000000..0830160e5
--- /dev/null
+++ b/solr-8.1.1/licenses/.boilerpipe-LICENSE-ASL 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.boilerpipe-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.boilerpipe-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..109417e68
--- /dev/null
+++ b/solr-8.1.1/licenses/.boilerpipe-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.byte-buddy-1.9.3.jar 2.sha1.icloud b/solr-8.1.1/licenses/.byte-buddy-1.9.3.jar 2.sha1.icloud
new file mode 100644
index 000000000..bb654ce8a
--- /dev/null
+++ b/solr-8.1.1/licenses/.byte-buddy-1.9.3.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.byte-buddy-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.byte-buddy-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..4afcb2deb
--- /dev/null
+++ b/solr-8.1.1/licenses/.byte-buddy-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.caffeine-2.4.0.jar 2.sha1.icloud b/solr-8.1.1/licenses/.caffeine-2.4.0.jar 2.sha1.icloud
new file mode 100644
index 000000000..937fa1cce
--- /dev/null
+++ b/solr-8.1.1/licenses/.caffeine-2.4.0.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.caffeine-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.caffeine-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..56ccd36f5
--- /dev/null
+++ b/solr-8.1.1/licenses/.caffeine-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.calcite-core-1.18.0.jar 2.sha1.icloud b/solr-8.1.1/licenses/.calcite-core-1.18.0.jar 2.sha1.icloud
new file mode 100644
index 000000000..fecd84cbb
--- /dev/null
+++ b/solr-8.1.1/licenses/.calcite-core-1.18.0.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.calcite-core-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.calcite-core-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..2d21acd29
--- /dev/null
+++ b/solr-8.1.1/licenses/.calcite-core-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.calcite-linq4j-1.18.0.jar 2.sha1.icloud b/solr-8.1.1/licenses/.calcite-linq4j-1.18.0.jar 2.sha1.icloud
new file mode 100644
index 000000000..3cd266934
--- /dev/null
+++ b/solr-8.1.1/licenses/.calcite-linq4j-1.18.0.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.calcite-linq4j-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.calcite-linq4j-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..ee2c9c059
--- /dev/null
+++ b/solr-8.1.1/licenses/.calcite-linq4j-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.carrot2-guava-18.0.jar 2.sha1.icloud b/solr-8.1.1/licenses/.carrot2-guava-18.0.jar 2.sha1.icloud
new file mode 100644
index 000000000..b810452d2
--- /dev/null
+++ b/solr-8.1.1/licenses/.carrot2-guava-18.0.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.carrot2-guava-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.carrot2-guava-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..fdf367d98
--- /dev/null
+++ b/solr-8.1.1/licenses/.carrot2-guava-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.carrot2-mini-3.16.0.jar 2.sha1.icloud b/solr-8.1.1/licenses/.carrot2-mini-3.16.0.jar 2.sha1.icloud
new file mode 100644
index 000000000..fd1451edc
--- /dev/null
+++ b/solr-8.1.1/licenses/.carrot2-mini-3.16.0.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.carrot2-mini-LICENSE-BSD_LIKE 2.txt.icloud b/solr-8.1.1/licenses/.carrot2-mini-LICENSE-BSD_LIKE 2.txt.icloud
new file mode 100644
index 000000000..dc569b2c1
--- /dev/null
+++ b/solr-8.1.1/licenses/.carrot2-mini-LICENSE-BSD_LIKE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.carrot2-mini-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.carrot2-mini-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..6725c5fee
--- /dev/null
+++ b/solr-8.1.1/licenses/.carrot2-mini-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.commons-beanutils-1.9.3.jar 2.sha1.icloud b/solr-8.1.1/licenses/.commons-beanutils-1.9.3.jar 2.sha1.icloud
new file mode 100644
index 000000000..6f5ab390f
--- /dev/null
+++ b/solr-8.1.1/licenses/.commons-beanutils-1.9.3.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.commons-beanutils-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.commons-beanutils-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..5cbd4a031
--- /dev/null
+++ b/solr-8.1.1/licenses/.commons-beanutils-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.commons-cli-1.2.jar 2.sha1.icloud b/solr-8.1.1/licenses/.commons-cli-1.2.jar 2.sha1.icloud
new file mode 100644
index 000000000..305b2f059
--- /dev/null
+++ b/solr-8.1.1/licenses/.commons-cli-1.2.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.commons-cli-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.commons-cli-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..ac4d77e40
--- /dev/null
+++ b/solr-8.1.1/licenses/.commons-cli-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.commons-codec-1.11.jar 2.sha1.icloud b/solr-8.1.1/licenses/.commons-codec-1.11.jar 2.sha1.icloud
new file mode 100644
index 000000000..8648eed1e
--- /dev/null
+++ b/solr-8.1.1/licenses/.commons-codec-1.11.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.commons-codec-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.commons-codec-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..9495b8648
--- /dev/null
+++ b/solr-8.1.1/licenses/.commons-codec-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.commons-collections-3.2.2.jar 2.sha1.icloud b/solr-8.1.1/licenses/.commons-collections-3.2.2.jar 2.sha1.icloud
new file mode 100644
index 000000000..e07c237a6
--- /dev/null
+++ b/solr-8.1.1/licenses/.commons-collections-3.2.2.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.commons-collections-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.commons-collections-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..dd42eb6d6
--- /dev/null
+++ b/solr-8.1.1/licenses/.commons-collections-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.commons-collections4-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.commons-collections4-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..2426b375b
--- /dev/null
+++ b/solr-8.1.1/licenses/.commons-collections4-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.commons-compiler-3.0.9.jar 2.sha1.icloud b/solr-8.1.1/licenses/.commons-compiler-3.0.9.jar 2.sha1.icloud
new file mode 100644
index 000000000..6fb3c2dd2
--- /dev/null
+++ b/solr-8.1.1/licenses/.commons-compiler-3.0.9.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.commons-compiler-LICENSE-BSD 2.txt.icloud b/solr-8.1.1/licenses/.commons-compiler-LICENSE-BSD 2.txt.icloud
new file mode 100644
index 000000000..d17e1453f
--- /dev/null
+++ b/solr-8.1.1/licenses/.commons-compiler-LICENSE-BSD 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.commons-compiler-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.commons-compiler-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..c74713e26
--- /dev/null
+++ b/solr-8.1.1/licenses/.commons-compiler-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.commons-compress-1.18.jar 2.sha1.icloud b/solr-8.1.1/licenses/.commons-compress-1.18.jar 2.sha1.icloud
new file mode 100644
index 000000000..bb13a259c
--- /dev/null
+++ b/solr-8.1.1/licenses/.commons-compress-1.18.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.commons-compress-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.commons-compress-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..77e0cfd35
--- /dev/null
+++ b/solr-8.1.1/licenses/.commons-compress-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.commons-configuration-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.commons-configuration-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..552d802c8
--- /dev/null
+++ b/solr-8.1.1/licenses/.commons-configuration-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.commons-configuration2-2.1.1.jar 2.sha1.icloud b/solr-8.1.1/licenses/.commons-configuration2-2.1.1.jar 2.sha1.icloud
new file mode 100644
index 000000000..3633dec4d
--- /dev/null
+++ b/solr-8.1.1/licenses/.commons-configuration2-2.1.1.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.commons-configuration2-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.commons-configuration2-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..3e5827a6f
--- /dev/null
+++ b/solr-8.1.1/licenses/.commons-configuration2-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.commons-digester-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.commons-digester-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..dc164fc56
--- /dev/null
+++ b/solr-8.1.1/licenses/.commons-digester-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.commons-exec-1.3.jar 2.sha1.icloud b/solr-8.1.1/licenses/.commons-exec-1.3.jar 2.sha1.icloud
new file mode 100644
index 000000000..1653d9914
--- /dev/null
+++ b/solr-8.1.1/licenses/.commons-exec-1.3.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.commons-exec-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.commons-exec-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..028890563
--- /dev/null
+++ b/solr-8.1.1/licenses/.commons-exec-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.commons-fileupload-1.3.3.jar 2.sha1.icloud b/solr-8.1.1/licenses/.commons-fileupload-1.3.3.jar 2.sha1.icloud
new file mode 100644
index 000000000..5f53607eb
--- /dev/null
+++ b/solr-8.1.1/licenses/.commons-fileupload-1.3.3.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.commons-fileupload-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.commons-fileupload-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..b958b0eb0
--- /dev/null
+++ b/solr-8.1.1/licenses/.commons-fileupload-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.commons-io-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.commons-io-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..444a85023
--- /dev/null
+++ b/solr-8.1.1/licenses/.commons-io-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.commons-lang3-3.8.1.jar 2.sha1.icloud b/solr-8.1.1/licenses/.commons-lang3-3.8.1.jar 2.sha1.icloud
new file mode 100644
index 000000000..29d997a09
--- /dev/null
+++ b/solr-8.1.1/licenses/.commons-lang3-3.8.1.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.commons-lang3-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.commons-lang3-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..b8e2f0e4e
--- /dev/null
+++ b/solr-8.1.1/licenses/.commons-lang3-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.commons-logging-1.1.3.jar 2.sha1.icloud b/solr-8.1.1/licenses/.commons-logging-1.1.3.jar 2.sha1.icloud
new file mode 100644
index 000000000..e2bc133a5
--- /dev/null
+++ b/solr-8.1.1/licenses/.commons-logging-1.1.3.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.commons-logging-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.commons-logging-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..c9765566b
--- /dev/null
+++ b/solr-8.1.1/licenses/.commons-logging-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.commons-math3-3.6.1.jar 2.sha1.icloud b/solr-8.1.1/licenses/.commons-math3-3.6.1.jar 2.sha1.icloud
new file mode 100644
index 000000000..0f4981fcd
--- /dev/null
+++ b/solr-8.1.1/licenses/.commons-math3-3.6.1.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.commons-math3-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.commons-math3-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..b87e5dfbd
--- /dev/null
+++ b/solr-8.1.1/licenses/.commons-math3-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.commons-text-1.6.jar 2.sha1.icloud b/solr-8.1.1/licenses/.commons-text-1.6.jar 2.sha1.icloud
new file mode 100644
index 000000000..4d4b1b359
--- /dev/null
+++ b/solr-8.1.1/licenses/.commons-text-1.6.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.commons-text-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.commons-text-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..f9f761792
--- /dev/null
+++ b/solr-8.1.1/licenses/.commons-text-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.curator-client-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.curator-client-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..84317191f
--- /dev/null
+++ b/solr-8.1.1/licenses/.curator-client-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.curator-framework-2.13.0.jar 2.sha1.icloud b/solr-8.1.1/licenses/.curator-framework-2.13.0.jar 2.sha1.icloud
new file mode 100644
index 000000000..c177d3304
--- /dev/null
+++ b/solr-8.1.1/licenses/.curator-framework-2.13.0.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.curator-framework-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.curator-framework-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..eabf1420b
--- /dev/null
+++ b/solr-8.1.1/licenses/.curator-framework-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.curator-recipes-2.13.0.jar 2.sha1.icloud b/solr-8.1.1/licenses/.curator-recipes-2.13.0.jar 2.sha1.icloud
new file mode 100644
index 000000000..baef9c864
--- /dev/null
+++ b/solr-8.1.1/licenses/.curator-recipes-2.13.0.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.curator-recipes-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.curator-recipes-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..ad00616bb
--- /dev/null
+++ b/solr-8.1.1/licenses/.curator-recipes-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.curvesapi-1.04.jar 2.sha1.icloud b/solr-8.1.1/licenses/.curvesapi-1.04.jar 2.sha1.icloud
new file mode 100644
index 000000000..aeaf229de
--- /dev/null
+++ b/solr-8.1.1/licenses/.curvesapi-1.04.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.curvesapi-LICENSE-BSD_LIKE 2.txt.icloud b/solr-8.1.1/licenses/.curvesapi-LICENSE-BSD_LIKE 2.txt.icloud
new file mode 100644
index 000000000..09a21bdb1
--- /dev/null
+++ b/solr-8.1.1/licenses/.curvesapi-LICENSE-BSD_LIKE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.curvesapi-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.curvesapi-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..a0b59fcd5
--- /dev/null
+++ b/solr-8.1.1/licenses/.curvesapi-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.dec-0.1.2.jar 2.sha1.icloud b/solr-8.1.1/licenses/.dec-0.1.2.jar 2.sha1.icloud
new file mode 100644
index 000000000..311b2d70f
--- /dev/null
+++ b/solr-8.1.1/licenses/.dec-0.1.2.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.dec-LICENSE-MIT 2.txt.icloud b/solr-8.1.1/licenses/.dec-LICENSE-MIT 2.txt.icloud
new file mode 100644
index 000000000..840d0bb4f
--- /dev/null
+++ b/solr-8.1.1/licenses/.dec-LICENSE-MIT 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.dec-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.dec-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..5382334c7
--- /dev/null
+++ b/solr-8.1.1/licenses/.dec-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.disruptor-3.4.2.jar 2.sha1.icloud b/solr-8.1.1/licenses/.disruptor-3.4.2.jar 2.sha1.icloud
new file mode 100644
index 000000000..154409dd2
--- /dev/null
+++ b/solr-8.1.1/licenses/.disruptor-3.4.2.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.disruptor-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.disruptor-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..bc11ca82a
--- /dev/null
+++ b/solr-8.1.1/licenses/.disruptor-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.eigenbase-properties-1.1.5.jar 2.sha1.icloud b/solr-8.1.1/licenses/.eigenbase-properties-1.1.5.jar 2.sha1.icloud
new file mode 100644
index 000000000..14cb7ca67
--- /dev/null
+++ b/solr-8.1.1/licenses/.eigenbase-properties-1.1.5.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.eigenbase-properties-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.eigenbase-properties-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..0d0784045
--- /dev/null
+++ b/solr-8.1.1/licenses/.eigenbase-properties-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.fontbox-2.0.12.jar 2.sha1.icloud b/solr-8.1.1/licenses/.fontbox-2.0.12.jar 2.sha1.icloud
new file mode 100644
index 000000000..7d646fee8
--- /dev/null
+++ b/solr-8.1.1/licenses/.fontbox-2.0.12.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.fontbox-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.fontbox-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..1191af688
--- /dev/null
+++ b/solr-8.1.1/licenses/.fontbox-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.guava-25.1-jre.jar 2.sha1.icloud b/solr-8.1.1/licenses/.guava-25.1-jre.jar 2.sha1.icloud
new file mode 100644
index 000000000..374a24b10
--- /dev/null
+++ b/solr-8.1.1/licenses/.guava-25.1-jre.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.guava-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.guava-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..5bc5964be
--- /dev/null
+++ b/solr-8.1.1/licenses/.guava-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.hadoop-annotations-3.2.0.jar 2.sha1.icloud b/solr-8.1.1/licenses/.hadoop-annotations-3.2.0.jar 2.sha1.icloud
new file mode 100644
index 000000000..6aed2e3db
--- /dev/null
+++ b/solr-8.1.1/licenses/.hadoop-annotations-3.2.0.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.hadoop-annotations-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.hadoop-annotations-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..5f434010c
--- /dev/null
+++ b/solr-8.1.1/licenses/.hadoop-annotations-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.hadoop-auth-3.2.0.jar 2.sha1.icloud b/solr-8.1.1/licenses/.hadoop-auth-3.2.0.jar 2.sha1.icloud
new file mode 100644
index 000000000..f69614845
--- /dev/null
+++ b/solr-8.1.1/licenses/.hadoop-auth-3.2.0.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.hadoop-auth-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.hadoop-auth-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..c73b7415d
--- /dev/null
+++ b/solr-8.1.1/licenses/.hadoop-auth-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.hadoop-common-3.2.0-tests.jar 2.sha1.icloud b/solr-8.1.1/licenses/.hadoop-common-3.2.0-tests.jar 2.sha1.icloud
new file mode 100644
index 000000000..a90cf89d2
--- /dev/null
+++ b/solr-8.1.1/licenses/.hadoop-common-3.2.0-tests.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.hadoop-common-3.2.0.jar 2.sha1.icloud b/solr-8.1.1/licenses/.hadoop-common-3.2.0.jar 2.sha1.icloud
new file mode 100644
index 000000000..f0a2d714e
--- /dev/null
+++ b/solr-8.1.1/licenses/.hadoop-common-3.2.0.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.hadoop-common-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.hadoop-common-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..d8988a1cd
--- /dev/null
+++ b/solr-8.1.1/licenses/.hadoop-common-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.hadoop-common-tests-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.hadoop-common-tests-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..81fda91d5
--- /dev/null
+++ b/solr-8.1.1/licenses/.hadoop-common-tests-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.hadoop-hdfs-3.2.0-tests.jar 2.sha1.icloud b/solr-8.1.1/licenses/.hadoop-hdfs-3.2.0-tests.jar 2.sha1.icloud
new file mode 100644
index 000000000..50ef9ff5b
--- /dev/null
+++ b/solr-8.1.1/licenses/.hadoop-hdfs-3.2.0-tests.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.hadoop-hdfs-3.2.0.jar 2.sha1.icloud b/solr-8.1.1/licenses/.hadoop-hdfs-3.2.0.jar 2.sha1.icloud
new file mode 100644
index 000000000..3b017f439
--- /dev/null
+++ b/solr-8.1.1/licenses/.hadoop-hdfs-3.2.0.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.hadoop-hdfs-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.hadoop-hdfs-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..f9eb9a063
--- /dev/null
+++ b/solr-8.1.1/licenses/.hadoop-hdfs-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.hadoop-hdfs-client-3.2.0.jar 2.sha1.icloud b/solr-8.1.1/licenses/.hadoop-hdfs-client-3.2.0.jar 2.sha1.icloud
new file mode 100644
index 000000000..f53f68e68
--- /dev/null
+++ b/solr-8.1.1/licenses/.hadoop-hdfs-client-3.2.0.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.hadoop-minicluster-3.2.0.jar 2.sha1.icloud b/solr-8.1.1/licenses/.hadoop-minicluster-3.2.0.jar 2.sha1.icloud
new file mode 100644
index 000000000..ae334a7aa
--- /dev/null
+++ b/solr-8.1.1/licenses/.hadoop-minicluster-3.2.0.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.hadoop-minicluster-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.hadoop-minicluster-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..ef0de45e2
--- /dev/null
+++ b/solr-8.1.1/licenses/.hadoop-minicluster-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.hadoop-minikdc-3.2.0.jar 2.sha1.icloud b/solr-8.1.1/licenses/.hadoop-minikdc-3.2.0.jar 2.sha1.icloud
new file mode 100644
index 000000000..b416faeb1
--- /dev/null
+++ b/solr-8.1.1/licenses/.hadoop-minikdc-3.2.0.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.hadoop-minikdc-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.hadoop-minikdc-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..d84a143a6
--- /dev/null
+++ b/solr-8.1.1/licenses/.hadoop-minikdc-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.hamcrest-core-1.3.jar 2.sha1.icloud b/solr-8.1.1/licenses/.hamcrest-core-1.3.jar 2.sha1.icloud
new file mode 100644
index 000000000..4b41f2f68
--- /dev/null
+++ b/solr-8.1.1/licenses/.hamcrest-core-1.3.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.hamcrest-core-LICENSE-BSD 2.txt.icloud b/solr-8.1.1/licenses/.hamcrest-core-LICENSE-BSD 2.txt.icloud
new file mode 100644
index 000000000..b6c1206b9
--- /dev/null
+++ b/solr-8.1.1/licenses/.hamcrest-core-LICENSE-BSD 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.hamcrest-core-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.hamcrest-core-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..59b2d3bb2
--- /dev/null
+++ b/solr-8.1.1/licenses/.hamcrest-core-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.hppc-0.8.1.jar 2.sha1.icloud b/solr-8.1.1/licenses/.hppc-0.8.1.jar 2.sha1.icloud
new file mode 100644
index 000000000..debca270a
--- /dev/null
+++ b/solr-8.1.1/licenses/.hppc-0.8.1.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.hppc-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.hppc-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..146657a9f
--- /dev/null
+++ b/solr-8.1.1/licenses/.hppc-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.hsqldb-2.4.0.jar 2.sha1.icloud b/solr-8.1.1/licenses/.hsqldb-2.4.0.jar 2.sha1.icloud
new file mode 100644
index 000000000..32497b347
--- /dev/null
+++ b/solr-8.1.1/licenses/.hsqldb-2.4.0.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.hsqldb-LICENSE-BSD_LIKE 2.txt.icloud b/solr-8.1.1/licenses/.hsqldb-LICENSE-BSD_LIKE 2.txt.icloud
new file mode 100644
index 000000000..659b49284
--- /dev/null
+++ b/solr-8.1.1/licenses/.hsqldb-LICENSE-BSD_LIKE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.hsqldb-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.hsqldb-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..97b871607
--- /dev/null
+++ b/solr-8.1.1/licenses/.hsqldb-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.htrace-core4-4.1.0-incubating.jar 2.sha1.icloud b/solr-8.1.1/licenses/.htrace-core4-4.1.0-incubating.jar 2.sha1.icloud
new file mode 100644
index 000000000..9c00fc446
--- /dev/null
+++ b/solr-8.1.1/licenses/.htrace-core4-4.1.0-incubating.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.htrace-core4-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.htrace-core4-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..16e61b595
--- /dev/null
+++ b/solr-8.1.1/licenses/.htrace-core4-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.http2-common-9.4.14.v20181114.jar 2.sha1.icloud b/solr-8.1.1/licenses/.http2-common-9.4.14.v20181114.jar 2.sha1.icloud
new file mode 100644
index 000000000..849830caa
--- /dev/null
+++ b/solr-8.1.1/licenses/.http2-common-9.4.14.v20181114.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.http2-hpack-9.4.14.v20181114.jar 2.sha1.icloud b/solr-8.1.1/licenses/.http2-hpack-9.4.14.v20181114.jar 2.sha1.icloud
new file mode 100644
index 000000000..2efaa8e1b
--- /dev/null
+++ b/solr-8.1.1/licenses/.http2-hpack-9.4.14.v20181114.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.httpclient-4.5.6.jar 2.sha1.icloud b/solr-8.1.1/licenses/.httpclient-4.5.6.jar 2.sha1.icloud
new file mode 100644
index 000000000..47fc582bb
--- /dev/null
+++ b/solr-8.1.1/licenses/.httpclient-4.5.6.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.httpclient-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.httpclient-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..1f6ee34a2
--- /dev/null
+++ b/solr-8.1.1/licenses/.httpclient-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.httpcore-4.4.10.jar 2.sha1.icloud b/solr-8.1.1/licenses/.httpcore-4.4.10.jar 2.sha1.icloud
new file mode 100644
index 000000000..931322525
--- /dev/null
+++ b/solr-8.1.1/licenses/.httpcore-4.4.10.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.httpmime-4.5.6.jar 2.sha1.icloud b/solr-8.1.1/licenses/.httpmime-4.5.6.jar 2.sha1.icloud
new file mode 100644
index 000000000..3acce9321
--- /dev/null
+++ b/solr-8.1.1/licenses/.httpmime-4.5.6.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.httpmime-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.httpmime-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..f9289cc5a
--- /dev/null
+++ b/solr-8.1.1/licenses/.httpmime-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.icu4j-62.1.jar 2.sha1.icloud b/solr-8.1.1/licenses/.icu4j-62.1.jar 2.sha1.icloud
new file mode 100644
index 000000000..563e0edda
--- /dev/null
+++ b/solr-8.1.1/licenses/.icu4j-62.1.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.icu4j-LICENSE-BSD_LIKE 2.txt.icloud b/solr-8.1.1/licenses/.icu4j-LICENSE-BSD_LIKE 2.txt.icloud
new file mode 100644
index 000000000..4694be805
--- /dev/null
+++ b/solr-8.1.1/licenses/.icu4j-LICENSE-BSD_LIKE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.icu4j-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.icu4j-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..c3e2039dc
--- /dev/null
+++ b/solr-8.1.1/licenses/.icu4j-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.isoparser-1.1.22.jar 2.sha1.icloud b/solr-8.1.1/licenses/.isoparser-1.1.22.jar 2.sha1.icloud
new file mode 100644
index 000000000..35d463188
--- /dev/null
+++ b/solr-8.1.1/licenses/.isoparser-1.1.22.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.isoparser-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.isoparser-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..2b5c8166f
--- /dev/null
+++ b/solr-8.1.1/licenses/.isoparser-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jackcess-2.1.12.jar 2.sha1.icloud b/solr-8.1.1/licenses/.jackcess-2.1.12.jar 2.sha1.icloud
new file mode 100644
index 000000000..ad4721fc6
--- /dev/null
+++ b/solr-8.1.1/licenses/.jackcess-2.1.12.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jackcess-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.jackcess-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..6dd0e835f
--- /dev/null
+++ b/solr-8.1.1/licenses/.jackcess-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jackcess-encrypt-2.1.4.jar 2.sha1.icloud b/solr-8.1.1/licenses/.jackcess-encrypt-2.1.4.jar 2.sha1.icloud
new file mode 100644
index 000000000..321fc2426
--- /dev/null
+++ b/solr-8.1.1/licenses/.jackcess-encrypt-2.1.4.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jackson-annotations-2.9.8.jar 2.sha1.icloud b/solr-8.1.1/licenses/.jackson-annotations-2.9.8.jar 2.sha1.icloud
new file mode 100644
index 000000000..0b14b6fac
--- /dev/null
+++ b/solr-8.1.1/licenses/.jackson-annotations-2.9.8.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jackson-annotations-LICENSE-ASL 2.txt.icloud b/solr-8.1.1/licenses/.jackson-annotations-LICENSE-ASL 2.txt.icloud
new file mode 100644
index 000000000..098e59b47
--- /dev/null
+++ b/solr-8.1.1/licenses/.jackson-annotations-LICENSE-ASL 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jackson-annotations-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.jackson-annotations-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..5986e948d
--- /dev/null
+++ b/solr-8.1.1/licenses/.jackson-annotations-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jackson-core-2.9.8.jar 2.sha1.icloud b/solr-8.1.1/licenses/.jackson-core-2.9.8.jar 2.sha1.icloud
new file mode 100644
index 000000000..efdb63db2
--- /dev/null
+++ b/solr-8.1.1/licenses/.jackson-core-2.9.8.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jackson-core-LICENSE-ASL 2.txt.icloud b/solr-8.1.1/licenses/.jackson-core-LICENSE-ASL 2.txt.icloud
new file mode 100644
index 000000000..c52615fc2
--- /dev/null
+++ b/solr-8.1.1/licenses/.jackson-core-LICENSE-ASL 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jackson-core-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.jackson-core-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..da923b2c9
--- /dev/null
+++ b/solr-8.1.1/licenses/.jackson-core-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jackson-core-asl-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.jackson-core-asl-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..841bea00e
--- /dev/null
+++ b/solr-8.1.1/licenses/.jackson-core-asl-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jackson-databind-2.9.8.jar 2.sha1.icloud b/solr-8.1.1/licenses/.jackson-databind-2.9.8.jar 2.sha1.icloud
new file mode 100644
index 000000000..c9a47338c
--- /dev/null
+++ b/solr-8.1.1/licenses/.jackson-databind-2.9.8.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jackson-databind-LICENSE-ASL 2.txt.icloud b/solr-8.1.1/licenses/.jackson-databind-LICENSE-ASL 2.txt.icloud
new file mode 100644
index 000000000..70a95215f
--- /dev/null
+++ b/solr-8.1.1/licenses/.jackson-databind-LICENSE-ASL 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jackson-databind-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.jackson-databind-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..e3efe0afc
--- /dev/null
+++ b/solr-8.1.1/licenses/.jackson-databind-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jackson-dataformat-smile-2.9.8.jar 2.sha1.icloud b/solr-8.1.1/licenses/.jackson-dataformat-smile-2.9.8.jar 2.sha1.icloud
new file mode 100644
index 000000000..aed1e33cd
--- /dev/null
+++ b/solr-8.1.1/licenses/.jackson-dataformat-smile-2.9.8.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jackson-dataformat-smile-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.jackson-dataformat-smile-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..c52b3dbf6
--- /dev/null
+++ b/solr-8.1.1/licenses/.jackson-dataformat-smile-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jackson-jq-LICENSE-ASL 2.txt.icloud b/solr-8.1.1/licenses/.jackson-jq-LICENSE-ASL 2.txt.icloud
new file mode 100644
index 000000000..eab8cc223
--- /dev/null
+++ b/solr-8.1.1/licenses/.jackson-jq-LICENSE-ASL 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jackson-jq-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.jackson-jq-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..4ba0d308e
--- /dev/null
+++ b/solr-8.1.1/licenses/.jackson-jq-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jackson-mapper-asl-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.jackson-mapper-asl-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..305b8f77a
--- /dev/null
+++ b/solr-8.1.1/licenses/.jackson-mapper-asl-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.janino-LICENSE-BSD 2.txt.icloud b/solr-8.1.1/licenses/.janino-LICENSE-BSD 2.txt.icloud
new file mode 100644
index 000000000..ac523cf10
--- /dev/null
+++ b/solr-8.1.1/licenses/.janino-LICENSE-BSD 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.janino-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.janino-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..2dea89c0f
--- /dev/null
+++ b/solr-8.1.1/licenses/.janino-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.java-libpst-0.8.1.jar 2.sha1.icloud b/solr-8.1.1/licenses/.java-libpst-0.8.1.jar 2.sha1.icloud
new file mode 100644
index 000000000..fd00e0c89
--- /dev/null
+++ b/solr-8.1.1/licenses/.java-libpst-0.8.1.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.java-libpst-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.java-libpst-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..ef44b4a0e
--- /dev/null
+++ b/solr-8.1.1/licenses/.java-libpst-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.javax.mail-1.5.1.jar 2.sha1.icloud b/solr-8.1.1/licenses/.javax.mail-1.5.1.jar 2.sha1.icloud
new file mode 100644
index 000000000..bbd98b21e
--- /dev/null
+++ b/solr-8.1.1/licenses/.javax.mail-1.5.1.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.javax.servlet-api-3.1.0.jar 2.sha1.icloud b/solr-8.1.1/licenses/.javax.servlet-api-3.1.0.jar 2.sha1.icloud
new file mode 100644
index 000000000..a1763282a
--- /dev/null
+++ b/solr-8.1.1/licenses/.javax.servlet-api-3.1.0.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.javax.servlet-api-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.javax.servlet-api-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..0d32ce2b3
--- /dev/null
+++ b/solr-8.1.1/licenses/.javax.servlet-api-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jcl-over-slf4j-1.7.24.jar 2.sha1.icloud b/solr-8.1.1/licenses/.jcl-over-slf4j-1.7.24.jar 2.sha1.icloud
new file mode 100644
index 000000000..79009db22
--- /dev/null
+++ b/solr-8.1.1/licenses/.jcl-over-slf4j-1.7.24.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jcl-over-slf4j-LICENSE-MIT 2.txt.icloud b/solr-8.1.1/licenses/.jcl-over-slf4j-LICENSE-MIT 2.txt.icloud
new file mode 100644
index 000000000..91be0d576
--- /dev/null
+++ b/solr-8.1.1/licenses/.jcl-over-slf4j-LICENSE-MIT 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jcl-over-slf4j-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.jcl-over-slf4j-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..168217ec2
--- /dev/null
+++ b/solr-8.1.1/licenses/.jcl-over-slf4j-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jdom2-2.0.6.jar 2.sha1.icloud b/solr-8.1.1/licenses/.jdom2-2.0.6.jar 2.sha1.icloud
new file mode 100644
index 000000000..ca9141513
--- /dev/null
+++ b/solr-8.1.1/licenses/.jdom2-2.0.6.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jdom2-LICENSE-BSD_LIKE 2.txt.icloud b/solr-8.1.1/licenses/.jdom2-LICENSE-BSD_LIKE 2.txt.icloud
new file mode 100644
index 000000000..08c88c9fa
--- /dev/null
+++ b/solr-8.1.1/licenses/.jdom2-LICENSE-BSD_LIKE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jdom2-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.jdom2-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..cf2575762
--- /dev/null
+++ b/solr-8.1.1/licenses/.jdom2-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jempbox-1.8.16.jar 2.sha1.icloud b/solr-8.1.1/licenses/.jempbox-1.8.16.jar 2.sha1.icloud
new file mode 100644
index 000000000..7e7e79acd
--- /dev/null
+++ b/solr-8.1.1/licenses/.jempbox-1.8.16.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jempbox-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.jempbox-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..2da8d0796
--- /dev/null
+++ b/solr-8.1.1/licenses/.jempbox-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jersey-core-1.19.jar 2.sha1.icloud b/solr-8.1.1/licenses/.jersey-core-1.19.jar 2.sha1.icloud
new file mode 100644
index 000000000..435fa5241
--- /dev/null
+++ b/solr-8.1.1/licenses/.jersey-core-1.19.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jersey-server-1.19.jar 2.sha1.icloud b/solr-8.1.1/licenses/.jersey-server-1.19.jar 2.sha1.icloud
new file mode 100644
index 000000000..d1791afa9
--- /dev/null
+++ b/solr-8.1.1/licenses/.jersey-server-1.19.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jersey-servlet-1.19.jar 2.sha1.icloud b/solr-8.1.1/licenses/.jersey-servlet-1.19.jar 2.sha1.icloud
new file mode 100644
index 000000000..7f35bf509
--- /dev/null
+++ b/solr-8.1.1/licenses/.jersey-servlet-1.19.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jetty-alpn-client-9.4.14.v20181114.jar 2.sha1.icloud b/solr-8.1.1/licenses/.jetty-alpn-client-9.4.14.v20181114.jar 2.sha1.icloud
new file mode 100644
index 000000000..cdae1d8c0
--- /dev/null
+++ b/solr-8.1.1/licenses/.jetty-alpn-client-9.4.14.v20181114.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jetty-alpn-java-client-9.4.14.v20181114.jar 2.sha1.icloud b/solr-8.1.1/licenses/.jetty-alpn-java-client-9.4.14.v20181114.jar 2.sha1.icloud
new file mode 100644
index 000000000..9401f9d9e
--- /dev/null
+++ b/solr-8.1.1/licenses/.jetty-alpn-java-client-9.4.14.v20181114.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jetty-alpn-server-9.4.14.v20181114.jar 2.sha1.icloud b/solr-8.1.1/licenses/.jetty-alpn-server-9.4.14.v20181114.jar 2.sha1.icloud
new file mode 100644
index 000000000..96612ac74
--- /dev/null
+++ b/solr-8.1.1/licenses/.jetty-alpn-server-9.4.14.v20181114.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jetty-client-9.4.14.v20181114.jar 2.sha1.icloud b/solr-8.1.1/licenses/.jetty-client-9.4.14.v20181114.jar 2.sha1.icloud
new file mode 100644
index 000000000..f98d79faa
--- /dev/null
+++ b/solr-8.1.1/licenses/.jetty-client-9.4.14.v20181114.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jetty-continuation-9.4.14.v20181114.jar 2.sha1.icloud b/solr-8.1.1/licenses/.jetty-continuation-9.4.14.v20181114.jar 2.sha1.icloud
new file mode 100644
index 000000000..da06b0045
--- /dev/null
+++ b/solr-8.1.1/licenses/.jetty-continuation-9.4.14.v20181114.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jetty-deploy-9.4.14.v20181114.jar 2.sha1.icloud b/solr-8.1.1/licenses/.jetty-deploy-9.4.14.v20181114.jar 2.sha1.icloud
new file mode 100644
index 000000000..89c0aa6f4
--- /dev/null
+++ b/solr-8.1.1/licenses/.jetty-deploy-9.4.14.v20181114.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jetty-http-9.4.14.v20181114.jar 2.sha1.icloud b/solr-8.1.1/licenses/.jetty-http-9.4.14.v20181114.jar 2.sha1.icloud
new file mode 100644
index 000000000..8190f656e
--- /dev/null
+++ b/solr-8.1.1/licenses/.jetty-http-9.4.14.v20181114.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jetty-io-9.4.14.v20181114.jar 2.sha1.icloud b/solr-8.1.1/licenses/.jetty-io-9.4.14.v20181114.jar 2.sha1.icloud
new file mode 100644
index 000000000..cfe918090
--- /dev/null
+++ b/solr-8.1.1/licenses/.jetty-io-9.4.14.v20181114.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jetty-jmx-9.4.14.v20181114.jar 2.sha1.icloud b/solr-8.1.1/licenses/.jetty-jmx-9.4.14.v20181114.jar 2.sha1.icloud
new file mode 100644
index 000000000..5e29ff608
--- /dev/null
+++ b/solr-8.1.1/licenses/.jetty-jmx-9.4.14.v20181114.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jetty-rewrite-9.4.14.v20181114.jar 2.sha1.icloud b/solr-8.1.1/licenses/.jetty-rewrite-9.4.14.v20181114.jar 2.sha1.icloud
new file mode 100644
index 000000000..1bac5688a
--- /dev/null
+++ b/solr-8.1.1/licenses/.jetty-rewrite-9.4.14.v20181114.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jetty-security-9.4.14.v20181114.jar 2.sha1.icloud b/solr-8.1.1/licenses/.jetty-security-9.4.14.v20181114.jar 2.sha1.icloud
new file mode 100644
index 000000000..cfb5a20eb
--- /dev/null
+++ b/solr-8.1.1/licenses/.jetty-security-9.4.14.v20181114.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jetty-server-9.4.14.v20181114.jar 2.sha1.icloud b/solr-8.1.1/licenses/.jetty-server-9.4.14.v20181114.jar 2.sha1.icloud
new file mode 100644
index 000000000..07efc3325
--- /dev/null
+++ b/solr-8.1.1/licenses/.jetty-server-9.4.14.v20181114.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jetty-servlet-9.4.14.v20181114.jar 2.sha1.icloud b/solr-8.1.1/licenses/.jetty-servlet-9.4.14.v20181114.jar 2.sha1.icloud
new file mode 100644
index 000000000..e617af60c
--- /dev/null
+++ b/solr-8.1.1/licenses/.jetty-servlet-9.4.14.v20181114.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jetty-servlets-9.4.14.v20181114.jar 2.sha1.icloud b/solr-8.1.1/licenses/.jetty-servlets-9.4.14.v20181114.jar 2.sha1.icloud
new file mode 100644
index 000000000..9298dde88
--- /dev/null
+++ b/solr-8.1.1/licenses/.jetty-servlets-9.4.14.v20181114.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jetty-util-9.4.14.v20181114.jar 2.sha1.icloud b/solr-8.1.1/licenses/.jetty-util-9.4.14.v20181114.jar 2.sha1.icloud
new file mode 100644
index 000000000..9aa92d911
--- /dev/null
+++ b/solr-8.1.1/licenses/.jetty-util-9.4.14.v20181114.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jetty-webapp-9.4.14.v20181114.jar 2.sha1.icloud b/solr-8.1.1/licenses/.jetty-webapp-9.4.14.v20181114.jar 2.sha1.icloud
new file mode 100644
index 000000000..2cab021a2
--- /dev/null
+++ b/solr-8.1.1/licenses/.jetty-webapp-9.4.14.v20181114.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jetty-xml-9.4.14.v20181114.jar 2.sha1.icloud b/solr-8.1.1/licenses/.jetty-xml-9.4.14.v20181114.jar 2.sha1.icloud
new file mode 100644
index 000000000..322bd906d
--- /dev/null
+++ b/solr-8.1.1/licenses/.jetty-xml-9.4.14.v20181114.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jmatio-1.5.jar 2.sha1.icloud b/solr-8.1.1/licenses/.jmatio-1.5.jar 2.sha1.icloud
new file mode 100644
index 000000000..b56203b10
--- /dev/null
+++ b/solr-8.1.1/licenses/.jmatio-1.5.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jmatio-LICENSE-BSD 2.txt.icloud b/solr-8.1.1/licenses/.jmatio-LICENSE-BSD 2.txt.icloud
new file mode 100644
index 000000000..a2056d9c3
--- /dev/null
+++ b/solr-8.1.1/licenses/.jmatio-LICENSE-BSD 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jmatio-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.jmatio-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..fea4ad13f
--- /dev/null
+++ b/solr-8.1.1/licenses/.jmatio-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jose4j-0.6.5.jar 2.sha1.icloud b/solr-8.1.1/licenses/.jose4j-0.6.5.jar 2.sha1.icloud
new file mode 100644
index 000000000..35baeee3b
--- /dev/null
+++ b/solr-8.1.1/licenses/.jose4j-0.6.5.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jose4j-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.jose4j-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..dff01ffc6
--- /dev/null
+++ b/solr-8.1.1/licenses/.jose4j-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.json-path-2.4.0.jar 2.sha1.icloud b/solr-8.1.1/licenses/.json-path-2.4.0.jar 2.sha1.icloud
new file mode 100644
index 000000000..165c388b7
--- /dev/null
+++ b/solr-8.1.1/licenses/.json-path-2.4.0.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.json-path-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.json-path-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..3c87b885d
--- /dev/null
+++ b/solr-8.1.1/licenses/.json-path-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jsonic-1.2.7.jar 2.sha1.icloud b/solr-8.1.1/licenses/.jsonic-1.2.7.jar 2.sha1.icloud
new file mode 100644
index 000000000..3e66522a8
--- /dev/null
+++ b/solr-8.1.1/licenses/.jsonic-1.2.7.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jsonic-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.jsonic-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..b506f38a6
--- /dev/null
+++ b/solr-8.1.1/licenses/.jsonic-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jsoup-1.11.3.jar 2.sha1.icloud b/solr-8.1.1/licenses/.jsoup-1.11.3.jar 2.sha1.icloud
new file mode 100644
index 000000000..52a32185b
--- /dev/null
+++ b/solr-8.1.1/licenses/.jsoup-1.11.3.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jul-to-slf4j-1.7.24.jar 2.sha1.icloud b/solr-8.1.1/licenses/.jul-to-slf4j-1.7.24.jar 2.sha1.icloud
new file mode 100644
index 000000000..b448bb308
--- /dev/null
+++ b/solr-8.1.1/licenses/.jul-to-slf4j-1.7.24.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jul-to-slf4j-LICENSE-MIT 2.txt.icloud b/solr-8.1.1/licenses/.jul-to-slf4j-LICENSE-MIT 2.txt.icloud
new file mode 100644
index 000000000..2d74265fa
--- /dev/null
+++ b/solr-8.1.1/licenses/.jul-to-slf4j-LICENSE-MIT 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.jul-to-slf4j-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.jul-to-slf4j-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..805ba0d75
--- /dev/null
+++ b/solr-8.1.1/licenses/.jul-to-slf4j-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.junit-4.12.jar 2.sha1.icloud b/solr-8.1.1/licenses/.junit-4.12.jar 2.sha1.icloud
new file mode 100644
index 000000000..a543c5287
--- /dev/null
+++ b/solr-8.1.1/licenses/.junit-4.12.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.junit-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.junit-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..2590e3005
--- /dev/null
+++ b/solr-8.1.1/licenses/.junit-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.junit4-ant-2.7.2.jar 2.sha1.icloud b/solr-8.1.1/licenses/.junit4-ant-2.7.2.jar 2.sha1.icloud
new file mode 100644
index 000000000..1402f09f9
--- /dev/null
+++ b/solr-8.1.1/licenses/.junit4-ant-2.7.2.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.junit4-ant-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.junit4-ant-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..c487eacfb
--- /dev/null
+++ b/solr-8.1.1/licenses/.junit4-ant-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.juniversalchardet-1.0.3.jar 2.sha1.icloud b/solr-8.1.1/licenses/.juniversalchardet-1.0.3.jar 2.sha1.icloud
new file mode 100644
index 000000000..260107414
--- /dev/null
+++ b/solr-8.1.1/licenses/.juniversalchardet-1.0.3.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.juniversalchardet-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.juniversalchardet-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..5f78c022f
--- /dev/null
+++ b/solr-8.1.1/licenses/.juniversalchardet-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.kerb-admin-1.0.1.jar 2.sha1.icloud b/solr-8.1.1/licenses/.kerb-admin-1.0.1.jar 2.sha1.icloud
new file mode 100644
index 000000000..5c47c9d83
--- /dev/null
+++ b/solr-8.1.1/licenses/.kerb-admin-1.0.1.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.kerb-admin-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.kerb-admin-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..646c90dec
--- /dev/null
+++ b/solr-8.1.1/licenses/.kerb-admin-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.kerb-client-1.0.1.jar 2.sha1.icloud b/solr-8.1.1/licenses/.kerb-client-1.0.1.jar 2.sha1.icloud
new file mode 100644
index 000000000..d1449477f
--- /dev/null
+++ b/solr-8.1.1/licenses/.kerb-client-1.0.1.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.kerb-client-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.kerb-client-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..30b608b66
--- /dev/null
+++ b/solr-8.1.1/licenses/.kerb-client-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.kerb-common-1.0.1.jar 2.sha1.icloud b/solr-8.1.1/licenses/.kerb-common-1.0.1.jar 2.sha1.icloud
new file mode 100644
index 000000000..e3d568e57
--- /dev/null
+++ b/solr-8.1.1/licenses/.kerb-common-1.0.1.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.kerb-common-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.kerb-common-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..6a379fada
--- /dev/null
+++ b/solr-8.1.1/licenses/.kerb-common-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.kerb-core-1.0.1.jar 2.sha1.icloud b/solr-8.1.1/licenses/.kerb-core-1.0.1.jar 2.sha1.icloud
new file mode 100644
index 000000000..f6da2e088
--- /dev/null
+++ b/solr-8.1.1/licenses/.kerb-core-1.0.1.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.kerb-core-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.kerb-core-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..ae516dbe6
--- /dev/null
+++ b/solr-8.1.1/licenses/.kerb-core-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.kerb-crypto-1.0.1.jar 2.sha1.icloud b/solr-8.1.1/licenses/.kerb-crypto-1.0.1.jar 2.sha1.icloud
new file mode 100644
index 000000000..4b41bbd90
--- /dev/null
+++ b/solr-8.1.1/licenses/.kerb-crypto-1.0.1.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.kerb-crypto-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.kerb-crypto-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..46753705d
--- /dev/null
+++ b/solr-8.1.1/licenses/.kerb-crypto-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.kerb-identity-1.0.1.jar 2.sha1.icloud b/solr-8.1.1/licenses/.kerb-identity-1.0.1.jar 2.sha1.icloud
new file mode 100644
index 000000000..f5e0445fc
--- /dev/null
+++ b/solr-8.1.1/licenses/.kerb-identity-1.0.1.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.kerb-identity-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.kerb-identity-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..254666afd
--- /dev/null
+++ b/solr-8.1.1/licenses/.kerb-identity-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.kerb-server-1.0.1.jar 2.sha1.icloud b/solr-8.1.1/licenses/.kerb-server-1.0.1.jar 2.sha1.icloud
new file mode 100644
index 000000000..76ed33e25
--- /dev/null
+++ b/solr-8.1.1/licenses/.kerb-server-1.0.1.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.kerb-server-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.kerb-server-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..018c04246
--- /dev/null
+++ b/solr-8.1.1/licenses/.kerb-server-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.kerb-simplekdc-1.0.1.jar 2.sha1.icloud b/solr-8.1.1/licenses/.kerb-simplekdc-1.0.1.jar 2.sha1.icloud
new file mode 100644
index 000000000..c00fba985
--- /dev/null
+++ b/solr-8.1.1/licenses/.kerb-simplekdc-1.0.1.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.kerb-simplekdc-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.kerb-simplekdc-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..a90841c59
--- /dev/null
+++ b/solr-8.1.1/licenses/.kerb-simplekdc-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.kerb-util-1.0.1.jar 2.sha1.icloud b/solr-8.1.1/licenses/.kerb-util-1.0.1.jar 2.sha1.icloud
new file mode 100644
index 000000000..9474b551c
--- /dev/null
+++ b/solr-8.1.1/licenses/.kerb-util-1.0.1.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.kerb-util-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.kerb-util-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..78368ce16
--- /dev/null
+++ b/solr-8.1.1/licenses/.kerb-util-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.kerby-asn1-1.0.1.jar 2.sha1.icloud b/solr-8.1.1/licenses/.kerby-asn1-1.0.1.jar 2.sha1.icloud
new file mode 100644
index 000000000..167a52fb5
--- /dev/null
+++ b/solr-8.1.1/licenses/.kerby-asn1-1.0.1.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.kerby-asn1-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.kerby-asn1-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..e2a8ca57a
--- /dev/null
+++ b/solr-8.1.1/licenses/.kerby-asn1-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.kerby-config-1.0.1.jar 2.sha1.icloud b/solr-8.1.1/licenses/.kerby-config-1.0.1.jar 2.sha1.icloud
new file mode 100644
index 000000000..78c79b1e1
--- /dev/null
+++ b/solr-8.1.1/licenses/.kerby-config-1.0.1.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.kerby-config-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.kerby-config-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..8fbcaaf4c
--- /dev/null
+++ b/solr-8.1.1/licenses/.kerby-config-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.kerby-kdc-1.0.1.jar 2.sha1.icloud b/solr-8.1.1/licenses/.kerby-kdc-1.0.1.jar 2.sha1.icloud
new file mode 100644
index 000000000..506ee4195
--- /dev/null
+++ b/solr-8.1.1/licenses/.kerby-kdc-1.0.1.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.kerby-kdc-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.kerby-kdc-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..c0eb48fe4
--- /dev/null
+++ b/solr-8.1.1/licenses/.kerby-kdc-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.kerby-pkix-1.0.1.jar 2.sha1.icloud b/solr-8.1.1/licenses/.kerby-pkix-1.0.1.jar 2.sha1.icloud
new file mode 100644
index 000000000..746b094b9
--- /dev/null
+++ b/solr-8.1.1/licenses/.kerby-pkix-1.0.1.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.kerby-pkix-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.kerby-pkix-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..a66b62509
--- /dev/null
+++ b/solr-8.1.1/licenses/.kerby-pkix-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.kerby-util-1.0.1.jar 2.sha1.icloud b/solr-8.1.1/licenses/.kerby-util-1.0.1.jar 2.sha1.icloud
new file mode 100644
index 000000000..6bbc7a5a0
--- /dev/null
+++ b/solr-8.1.1/licenses/.kerby-util-1.0.1.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.kerby-util-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.kerby-util-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..c7347c8e0
--- /dev/null
+++ b/solr-8.1.1/licenses/.kerby-util-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.langdetect-1.1-20120112.jar 2.sha1.icloud b/solr-8.1.1/licenses/.langdetect-1.1-20120112.jar 2.sha1.icloud
new file mode 100644
index 000000000..310663474
--- /dev/null
+++ b/solr-8.1.1/licenses/.langdetect-1.1-20120112.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.langdetect-LICENSE-ASL 2.txt.icloud b/solr-8.1.1/licenses/.langdetect-LICENSE-ASL 2.txt.icloud
new file mode 100644
index 000000000..2c8caee05
--- /dev/null
+++ b/solr-8.1.1/licenses/.langdetect-LICENSE-ASL 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.langdetect-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.langdetect-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..d9f39887a
--- /dev/null
+++ b/solr-8.1.1/licenses/.langdetect-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.log4j-1.2-api-2.11.2.jar 2.sha1.icloud b/solr-8.1.1/licenses/.log4j-1.2-api-2.11.2.jar 2.sha1.icloud
new file mode 100644
index 000000000..808d598dc
--- /dev/null
+++ b/solr-8.1.1/licenses/.log4j-1.2-api-2.11.2.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.log4j-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.log4j-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..f3130ec8c
--- /dev/null
+++ b/solr-8.1.1/licenses/.log4j-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.log4j-api-2.11.2.jar 2.sha1.icloud b/solr-8.1.1/licenses/.log4j-api-2.11.2.jar 2.sha1.icloud
new file mode 100644
index 000000000..5fc56bc2b
--- /dev/null
+++ b/solr-8.1.1/licenses/.log4j-api-2.11.2.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.log4j-api-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.log4j-api-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..e4a336915
--- /dev/null
+++ b/solr-8.1.1/licenses/.log4j-api-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.log4j-core-2.11.2.jar 2.sha1.icloud b/solr-8.1.1/licenses/.log4j-core-2.11.2.jar 2.sha1.icloud
new file mode 100644
index 000000000..b884f7727
--- /dev/null
+++ b/solr-8.1.1/licenses/.log4j-core-2.11.2.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.log4j-core-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.log4j-core-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..d9e953ee4
--- /dev/null
+++ b/solr-8.1.1/licenses/.log4j-core-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.log4j-slf4j-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.log4j-slf4j-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..1c196c6d3
--- /dev/null
+++ b/solr-8.1.1/licenses/.log4j-slf4j-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.log4j-slf4j-impl-2.11.2.jar 2.sha1.icloud b/solr-8.1.1/licenses/.log4j-slf4j-impl-2.11.2.jar 2.sha1.icloud
new file mode 100644
index 000000000..fdac9bdb8
--- /dev/null
+++ b/solr-8.1.1/licenses/.log4j-slf4j-impl-2.11.2.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.log4j-web-2.11.2.jar 2.sha1.icloud b/solr-8.1.1/licenses/.log4j-web-2.11.2.jar 2.sha1.icloud
new file mode 100644
index 000000000..dd8089ef5
--- /dev/null
+++ b/solr-8.1.1/licenses/.log4j-web-2.11.2.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.log4j-web-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.log4j-web-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..da31edc1e
--- /dev/null
+++ b/solr-8.1.1/licenses/.log4j-web-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.metadata-extractor-2.11.0.jar 2.sha1.icloud b/solr-8.1.1/licenses/.metadata-extractor-2.11.0.jar 2.sha1.icloud
new file mode 100644
index 000000000..93d12f820
--- /dev/null
+++ b/solr-8.1.1/licenses/.metadata-extractor-2.11.0.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.metadata-extractor-LICENSE-PD 2.txt.icloud b/solr-8.1.1/licenses/.metadata-extractor-LICENSE-PD 2.txt.icloud
new file mode 100644
index 000000000..912a77248
--- /dev/null
+++ b/solr-8.1.1/licenses/.metadata-extractor-LICENSE-PD 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.metrics-core-4.0.5.jar 2.sha1.icloud b/solr-8.1.1/licenses/.metrics-core-4.0.5.jar 2.sha1.icloud
new file mode 100644
index 000000000..270a0cf8f
--- /dev/null
+++ b/solr-8.1.1/licenses/.metrics-core-4.0.5.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.metrics-core-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.metrics-core-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..d5f563f80
--- /dev/null
+++ b/solr-8.1.1/licenses/.metrics-core-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.metrics-graphite-4.0.5.jar 2.sha1.icloud b/solr-8.1.1/licenses/.metrics-graphite-4.0.5.jar 2.sha1.icloud
new file mode 100644
index 000000000..2728b3c21
--- /dev/null
+++ b/solr-8.1.1/licenses/.metrics-graphite-4.0.5.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.metrics-graphite-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.metrics-graphite-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..687fbf311
--- /dev/null
+++ b/solr-8.1.1/licenses/.metrics-graphite-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.metrics-jetty-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.metrics-jetty-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..0c5a55ba0
--- /dev/null
+++ b/solr-8.1.1/licenses/.metrics-jetty-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.metrics-jetty9-4.0.5.jar 2.sha1.icloud b/solr-8.1.1/licenses/.metrics-jetty9-4.0.5.jar 2.sha1.icloud
new file mode 100644
index 000000000..b19d51496
--- /dev/null
+++ b/solr-8.1.1/licenses/.metrics-jetty9-4.0.5.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.metrics-jmx-4.0.5.jar 2.sha1.icloud b/solr-8.1.1/licenses/.metrics-jmx-4.0.5.jar 2.sha1.icloud
new file mode 100644
index 000000000..204bf45f5
--- /dev/null
+++ b/solr-8.1.1/licenses/.metrics-jmx-4.0.5.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.metrics-jmx-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.metrics-jmx-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..d7cfcf278
--- /dev/null
+++ b/solr-8.1.1/licenses/.metrics-jmx-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.metrics-json-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.metrics-json-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..c961f1b2e
--- /dev/null
+++ b/solr-8.1.1/licenses/.metrics-json-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.metrics-jvm-4.0.5.jar 2.sha1.icloud b/solr-8.1.1/licenses/.metrics-jvm-4.0.5.jar 2.sha1.icloud
new file mode 100644
index 000000000..29f4e1469
--- /dev/null
+++ b/solr-8.1.1/licenses/.metrics-jvm-4.0.5.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.metrics-jvm-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.metrics-jvm-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..874776391
--- /dev/null
+++ b/solr-8.1.1/licenses/.metrics-jvm-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.metrics-servlets-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.metrics-servlets-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..6bdf21dcd
--- /dev/null
+++ b/solr-8.1.1/licenses/.metrics-servlets-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.mina-core-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.mina-core-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..015447c18
--- /dev/null
+++ b/solr-8.1.1/licenses/.mina-core-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.mockito-core-2.23.4.jar 2.sha1.icloud b/solr-8.1.1/licenses/.mockito-core-2.23.4.jar 2.sha1.icloud
new file mode 100644
index 000000000..86941313a
--- /dev/null
+++ b/solr-8.1.1/licenses/.mockito-core-2.23.4.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.mockito-core-LICENSE-MIT 2.txt.icloud b/solr-8.1.1/licenses/.mockito-core-LICENSE-MIT 2.txt.icloud
new file mode 100644
index 000000000..71b82ddb4
--- /dev/null
+++ b/solr-8.1.1/licenses/.mockito-core-LICENSE-MIT 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.morfologik-fsa-2.1.5.jar 2.sha1.icloud b/solr-8.1.1/licenses/.morfologik-fsa-2.1.5.jar 2.sha1.icloud
new file mode 100644
index 000000000..7b1ce712c
--- /dev/null
+++ b/solr-8.1.1/licenses/.morfologik-fsa-2.1.5.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.morfologik-fsa-LICENSE-BSD 2.txt.icloud b/solr-8.1.1/licenses/.morfologik-fsa-LICENSE-BSD 2.txt.icloud
new file mode 100644
index 000000000..8990b37e1
--- /dev/null
+++ b/solr-8.1.1/licenses/.morfologik-fsa-LICENSE-BSD 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.morfologik-fsa-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.morfologik-fsa-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..b02b6e50e
--- /dev/null
+++ b/solr-8.1.1/licenses/.morfologik-fsa-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.morfologik-polish-2.1.5.jar 2.sha1.icloud b/solr-8.1.1/licenses/.morfologik-polish-2.1.5.jar 2.sha1.icloud
new file mode 100644
index 000000000..0325a27d3
--- /dev/null
+++ b/solr-8.1.1/licenses/.morfologik-polish-2.1.5.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.morfologik-polish-LICENSE-BSD 2.txt.icloud b/solr-8.1.1/licenses/.morfologik-polish-LICENSE-BSD 2.txt.icloud
new file mode 100644
index 000000000..d46ff0841
--- /dev/null
+++ b/solr-8.1.1/licenses/.morfologik-polish-LICENSE-BSD 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.morfologik-polish-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.morfologik-polish-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..aced04368
--- /dev/null
+++ b/solr-8.1.1/licenses/.morfologik-polish-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.morfologik-stemming-2.1.5.jar 2.sha1.icloud b/solr-8.1.1/licenses/.morfologik-stemming-2.1.5.jar 2.sha1.icloud
new file mode 100644
index 000000000..54efb5b49
--- /dev/null
+++ b/solr-8.1.1/licenses/.morfologik-stemming-2.1.5.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.morfologik-stemming-LICENSE-BSD 2.txt.icloud b/solr-8.1.1/licenses/.morfologik-stemming-LICENSE-BSD 2.txt.icloud
new file mode 100644
index 000000000..f24df2704
--- /dev/null
+++ b/solr-8.1.1/licenses/.morfologik-stemming-LICENSE-BSD 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.morfologik-stemming-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.morfologik-stemming-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..a71dcc985
--- /dev/null
+++ b/solr-8.1.1/licenses/.morfologik-stemming-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.netty-all-4.0.52.Final.jar 2.sha1.icloud b/solr-8.1.1/licenses/.netty-all-4.0.52.Final.jar 2.sha1.icloud
new file mode 100644
index 000000000..1e099c153
--- /dev/null
+++ b/solr-8.1.1/licenses/.netty-all-4.0.52.Final.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.noggit-0.8.jar 2.sha1.icloud b/solr-8.1.1/licenses/.noggit-0.8.jar 2.sha1.icloud
new file mode 100644
index 000000000..d544cd67a
--- /dev/null
+++ b/solr-8.1.1/licenses/.noggit-0.8.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.noggit-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.noggit-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..f89dbe171
--- /dev/null
+++ b/solr-8.1.1/licenses/.noggit-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.objenesis-2.6.jar 2.sha1.icloud b/solr-8.1.1/licenses/.objenesis-2.6.jar 2.sha1.icloud
new file mode 100644
index 000000000..39a14ec0a
--- /dev/null
+++ b/solr-8.1.1/licenses/.objenesis-2.6.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.objenesis-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.objenesis-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..c699b6397
--- /dev/null
+++ b/solr-8.1.1/licenses/.objenesis-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.opennlp-tools-1.9.1.jar 2.sha1.icloud b/solr-8.1.1/licenses/.opennlp-tools-1.9.1.jar 2.sha1.icloud
new file mode 100644
index 000000000..c9c1cdce0
--- /dev/null
+++ b/solr-8.1.1/licenses/.opennlp-tools-1.9.1.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.opennlp-tools-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.opennlp-tools-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..782cd8bc0
--- /dev/null
+++ b/solr-8.1.1/licenses/.opennlp-tools-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.org.restlet-2.3.0.jar 2.sha1.icloud b/solr-8.1.1/licenses/.org.restlet-2.3.0.jar 2.sha1.icloud
new file mode 100644
index 000000000..08bc40c67
--- /dev/null
+++ b/solr-8.1.1/licenses/.org.restlet-2.3.0.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.org.restlet-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.org.restlet-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..da0d8ea50
--- /dev/null
+++ b/solr-8.1.1/licenses/.org.restlet-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.org.restlet.ext.servlet-2.3.0.jar 2.sha1.icloud b/solr-8.1.1/licenses/.org.restlet.ext.servlet-2.3.0.jar 2.sha1.icloud
new file mode 100644
index 000000000..9ef9547dd
--- /dev/null
+++ b/solr-8.1.1/licenses/.org.restlet.ext.servlet-2.3.0.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.org.restlet.ext.servlet-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.org.restlet.ext.servlet-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..6d2e3720b
--- /dev/null
+++ b/solr-8.1.1/licenses/.org.restlet.ext.servlet-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.parso-2.0.9.jar 2.sha1.icloud b/solr-8.1.1/licenses/.parso-2.0.9.jar 2.sha1.icloud
new file mode 100644
index 000000000..81d558d96
--- /dev/null
+++ b/solr-8.1.1/licenses/.parso-2.0.9.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.pdfbox-2.0.12.jar 2.sha1.icloud b/solr-8.1.1/licenses/.pdfbox-2.0.12.jar 2.sha1.icloud
new file mode 100644
index 000000000..451c9f28c
--- /dev/null
+++ b/solr-8.1.1/licenses/.pdfbox-2.0.12.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.pdfbox-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.pdfbox-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..db4a43720
--- /dev/null
+++ b/solr-8.1.1/licenses/.pdfbox-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.pdfbox-tools-2.0.12.jar 2.sha1.icloud b/solr-8.1.1/licenses/.pdfbox-tools-2.0.12.jar 2.sha1.icloud
new file mode 100644
index 000000000..e1e1762cf
--- /dev/null
+++ b/solr-8.1.1/licenses/.pdfbox-tools-2.0.12.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.pdfbox-tools-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.pdfbox-tools-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..9dbed4afc
--- /dev/null
+++ b/solr-8.1.1/licenses/.pdfbox-tools-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.poi-4.0.0.jar 2.sha1.icloud b/solr-8.1.1/licenses/.poi-4.0.0.jar 2.sha1.icloud
new file mode 100644
index 000000000..087b78ef8
--- /dev/null
+++ b/solr-8.1.1/licenses/.poi-4.0.0.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.poi-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.poi-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..0a7a49a99
--- /dev/null
+++ b/solr-8.1.1/licenses/.poi-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.poi-ooxml-4.0.0.jar 2.sha1.icloud b/solr-8.1.1/licenses/.poi-ooxml-4.0.0.jar 2.sha1.icloud
new file mode 100644
index 000000000..16475b4fb
--- /dev/null
+++ b/solr-8.1.1/licenses/.poi-ooxml-4.0.0.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.poi-ooxml-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.poi-ooxml-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..df6ff64ae
--- /dev/null
+++ b/solr-8.1.1/licenses/.poi-ooxml-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.poi-ooxml-schemas-4.0.0.jar 2.sha1.icloud b/solr-8.1.1/licenses/.poi-ooxml-schemas-4.0.0.jar 2.sha1.icloud
new file mode 100644
index 000000000..1fb9cbf89
--- /dev/null
+++ b/solr-8.1.1/licenses/.poi-ooxml-schemas-4.0.0.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.poi-ooxml-schemas-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.poi-ooxml-schemas-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..a55b3f16d
--- /dev/null
+++ b/solr-8.1.1/licenses/.poi-ooxml-schemas-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.poi-scratchpad-4.0.0.jar 2.sha1.icloud b/solr-8.1.1/licenses/.poi-scratchpad-4.0.0.jar 2.sha1.icloud
new file mode 100644
index 000000000..2817f5d94
--- /dev/null
+++ b/solr-8.1.1/licenses/.poi-scratchpad-4.0.0.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.poi-scratchpad-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.poi-scratchpad-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..60e61f62c
--- /dev/null
+++ b/solr-8.1.1/licenses/.poi-scratchpad-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.presto-parser-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.presto-parser-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..d185cfe7e
--- /dev/null
+++ b/solr-8.1.1/licenses/.presto-parser-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.protobuf-java-3.6.1.jar 2.sha1.icloud b/solr-8.1.1/licenses/.protobuf-java-3.6.1.jar 2.sha1.icloud
new file mode 100644
index 000000000..fee6a3d17
--- /dev/null
+++ b/solr-8.1.1/licenses/.protobuf-java-3.6.1.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.protobuf-java-LICENSE-BSD 2.txt.icloud b/solr-8.1.1/licenses/.protobuf-java-LICENSE-BSD 2.txt.icloud
new file mode 100644
index 000000000..0f250e1a6
--- /dev/null
+++ b/solr-8.1.1/licenses/.protobuf-java-LICENSE-BSD 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.protobuf-java-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.protobuf-java-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..a2fa1ea25
--- /dev/null
+++ b/solr-8.1.1/licenses/.protobuf-java-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.randomizedtesting-runner-2.7.2.jar 2.sha1.icloud b/solr-8.1.1/licenses/.randomizedtesting-runner-2.7.2.jar 2.sha1.icloud
new file mode 100644
index 000000000..7026e0669
--- /dev/null
+++ b/solr-8.1.1/licenses/.randomizedtesting-runner-2.7.2.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.randomizedtesting-runner-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.randomizedtesting-runner-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..f21772c67
--- /dev/null
+++ b/solr-8.1.1/licenses/.randomizedtesting-runner-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.re2j-1.2.jar 2.sha1.icloud b/solr-8.1.1/licenses/.re2j-1.2.jar 2.sha1.icloud
new file mode 100644
index 000000000..3bfa58251
--- /dev/null
+++ b/solr-8.1.1/licenses/.re2j-1.2.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.re2j-LICENSE-BSD_LIKE 2.txt.icloud b/solr-8.1.1/licenses/.re2j-LICENSE-BSD_LIKE 2.txt.icloud
new file mode 100644
index 000000000..b72565a91
--- /dev/null
+++ b/solr-8.1.1/licenses/.re2j-LICENSE-BSD_LIKE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.re2j-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.re2j-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..26c35cfb6
--- /dev/null
+++ b/solr-8.1.1/licenses/.re2j-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.rome-1.5.1.jar 2.sha1.icloud b/solr-8.1.1/licenses/.rome-1.5.1.jar 2.sha1.icloud
new file mode 100644
index 000000000..136f9fbbe
--- /dev/null
+++ b/solr-8.1.1/licenses/.rome-1.5.1.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.rome-LICENSE-ASL 2.txt.icloud b/solr-8.1.1/licenses/.rome-LICENSE-ASL 2.txt.icloud
new file mode 100644
index 000000000..9bc6fa97b
--- /dev/null
+++ b/solr-8.1.1/licenses/.rome-LICENSE-ASL 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.rome-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.rome-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..388032029
--- /dev/null
+++ b/solr-8.1.1/licenses/.rome-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.rome-utils-1.5.1.jar 2.sha1.icloud b/solr-8.1.1/licenses/.rome-utils-1.5.1.jar 2.sha1.icloud
new file mode 100644
index 000000000..f257892a2
--- /dev/null
+++ b/solr-8.1.1/licenses/.rome-utils-1.5.1.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.rome-utils-LICENSE-ASL 2.txt.icloud b/solr-8.1.1/licenses/.rome-utils-LICENSE-ASL 2.txt.icloud
new file mode 100644
index 000000000..e32c46eac
--- /dev/null
+++ b/solr-8.1.1/licenses/.rome-utils-LICENSE-ASL 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.rome-utils-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.rome-utils-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..18ae824bd
--- /dev/null
+++ b/solr-8.1.1/licenses/.rome-utils-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.rrd4j-3.5.jar 2.sha1.icloud b/solr-8.1.1/licenses/.rrd4j-3.5.jar 2.sha1.icloud
new file mode 100644
index 000000000..4379030c4
--- /dev/null
+++ b/solr-8.1.1/licenses/.rrd4j-3.5.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.rrd4j-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.rrd4j-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..c672164be
--- /dev/null
+++ b/solr-8.1.1/licenses/.rrd4j-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.servlet-api-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.servlet-api-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..2f5ef152c
--- /dev/null
+++ b/solr-8.1.1/licenses/.servlet-api-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.simple-xml-2.7.1.jar 2.sha1.icloud b/solr-8.1.1/licenses/.simple-xml-2.7.1.jar 2.sha1.icloud
new file mode 100644
index 000000000..328addfd5
--- /dev/null
+++ b/solr-8.1.1/licenses/.simple-xml-2.7.1.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.simple-xml-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.simple-xml-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..a0c76249e
--- /dev/null
+++ b/solr-8.1.1/licenses/.simple-xml-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.simpleclient-0.2.0.jar 2.sha1.icloud b/solr-8.1.1/licenses/.simpleclient-0.2.0.jar 2.sha1.icloud
new file mode 100644
index 000000000..eac589b3a
--- /dev/null
+++ b/solr-8.1.1/licenses/.simpleclient-0.2.0.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.simpleclient-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.simpleclient-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..ecbb3d85a
--- /dev/null
+++ b/solr-8.1.1/licenses/.simpleclient-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.simpleclient_common-0.2.0.jar 2.sha1.icloud b/solr-8.1.1/licenses/.simpleclient_common-0.2.0.jar 2.sha1.icloud
new file mode 100644
index 000000000..4b03a540b
--- /dev/null
+++ b/solr-8.1.1/licenses/.simpleclient_common-0.2.0.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.simpleclient_common-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.simpleclient_common-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..b2e51d033
--- /dev/null
+++ b/solr-8.1.1/licenses/.simpleclient_common-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.simpleclient_httpserver-0.2.0.jar 2.sha1.icloud b/solr-8.1.1/licenses/.simpleclient_httpserver-0.2.0.jar 2.sha1.icloud
new file mode 100644
index 000000000..1dd582d83
--- /dev/null
+++ b/solr-8.1.1/licenses/.simpleclient_httpserver-0.2.0.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.simpleclient_httpserver-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.simpleclient_httpserver-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..3098c4b66
--- /dev/null
+++ b/solr-8.1.1/licenses/.simpleclient_httpserver-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.slf4j-LICENSE-MIT 2.txt.icloud b/solr-8.1.1/licenses/.slf4j-LICENSE-MIT 2.txt.icloud
new file mode 100644
index 000000000..5877a3530
--- /dev/null
+++ b/solr-8.1.1/licenses/.slf4j-LICENSE-MIT 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.slf4j-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.slf4j-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..a5102130a
--- /dev/null
+++ b/solr-8.1.1/licenses/.slf4j-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.slf4j-api-1.7.24.jar 2.sha1.icloud b/solr-8.1.1/licenses/.slf4j-api-1.7.24.jar 2.sha1.icloud
new file mode 100644
index 000000000..6380b545b
--- /dev/null
+++ b/solr-8.1.1/licenses/.slf4j-api-1.7.24.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.slf4j-simple-1.7.24.jar 2.sha1.icloud b/solr-8.1.1/licenses/.slf4j-simple-1.7.24.jar 2.sha1.icloud
new file mode 100644
index 000000000..59b22a082
--- /dev/null
+++ b/solr-8.1.1/licenses/.slf4j-simple-1.7.24.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.slice-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.slice-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..7cce25bd8
--- /dev/null
+++ b/solr-8.1.1/licenses/.slice-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.spatial4j-0.7.jar 2.sha1.icloud b/solr-8.1.1/licenses/.spatial4j-0.7.jar 2.sha1.icloud
new file mode 100644
index 000000000..404045f0d
--- /dev/null
+++ b/solr-8.1.1/licenses/.spatial4j-0.7.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.start.jar 2.sha1.icloud b/solr-8.1.1/licenses/.start.jar 2.sha1.icloud
new file mode 100644
index 000000000..68984afca
--- /dev/null
+++ b/solr-8.1.1/licenses/.start.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.stax2-api-3.1.4.jar 2.sha1.icloud b/solr-8.1.1/licenses/.stax2-api-3.1.4.jar 2.sha1.icloud
new file mode 100644
index 000000000..e8053cfa2
--- /dev/null
+++ b/solr-8.1.1/licenses/.stax2-api-3.1.4.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.stax2-api-LICENSE-BSD 2.txt.icloud b/solr-8.1.1/licenses/.stax2-api-LICENSE-BSD 2.txt.icloud
new file mode 100644
index 000000000..196925921
--- /dev/null
+++ b/solr-8.1.1/licenses/.stax2-api-LICENSE-BSD 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.stax2-api-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.stax2-api-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..b7c573601
--- /dev/null
+++ b/solr-8.1.1/licenses/.stax2-api-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.t-digest-3.1.jar 2.sha1.icloud b/solr-8.1.1/licenses/.t-digest-3.1.jar 2.sha1.icloud
new file mode 100644
index 000000000..232e20470
--- /dev/null
+++ b/solr-8.1.1/licenses/.t-digest-3.1.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.t-digest-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.t-digest-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..bf44581f9
--- /dev/null
+++ b/solr-8.1.1/licenses/.t-digest-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.tagsoup-1.2.1.jar 2.sha1.icloud b/solr-8.1.1/licenses/.tagsoup-1.2.1.jar 2.sha1.icloud
new file mode 100644
index 000000000..d89d7705b
--- /dev/null
+++ b/solr-8.1.1/licenses/.tagsoup-1.2.1.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.tagsoup-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.tagsoup-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..abe541791
--- /dev/null
+++ b/solr-8.1.1/licenses/.tagsoup-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.tika-core-1.19.1.jar 2.sha1.icloud b/solr-8.1.1/licenses/.tika-core-1.19.1.jar 2.sha1.icloud
new file mode 100644
index 000000000..1cd8bc17a
--- /dev/null
+++ b/solr-8.1.1/licenses/.tika-core-1.19.1.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.tika-core-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.tika-core-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..242991810
--- /dev/null
+++ b/solr-8.1.1/licenses/.tika-core-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.tika-java7-1.19.1.jar 2.sha1.icloud b/solr-8.1.1/licenses/.tika-java7-1.19.1.jar 2.sha1.icloud
new file mode 100644
index 000000000..77bbff5d6
--- /dev/null
+++ b/solr-8.1.1/licenses/.tika-java7-1.19.1.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.tika-java7-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.tika-java7-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..038e14588
--- /dev/null
+++ b/solr-8.1.1/licenses/.tika-java7-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.tika-parsers-1.19.1.jar 2.sha1.icloud b/solr-8.1.1/licenses/.tika-parsers-1.19.1.jar 2.sha1.icloud
new file mode 100644
index 000000000..cd13e3357
--- /dev/null
+++ b/solr-8.1.1/licenses/.tika-parsers-1.19.1.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.tika-parsers-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.tika-parsers-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..a74696bc1
--- /dev/null
+++ b/solr-8.1.1/licenses/.tika-parsers-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.tika-xmp-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.tika-xmp-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..0f6eb8bfc
--- /dev/null
+++ b/solr-8.1.1/licenses/.tika-xmp-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.velocity-engine-core-2.0.jar 2.sha1.icloud b/solr-8.1.1/licenses/.velocity-engine-core-2.0.jar 2.sha1.icloud
new file mode 100644
index 000000000..85981eda9
--- /dev/null
+++ b/solr-8.1.1/licenses/.velocity-engine-core-2.0.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.velocity-engine-core-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.velocity-engine-core-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..e19fe820e
--- /dev/null
+++ b/solr-8.1.1/licenses/.velocity-engine-core-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.velocity-tools-generic-3.0.jar 2.sha1.icloud b/solr-8.1.1/licenses/.velocity-tools-generic-3.0.jar 2.sha1.icloud
new file mode 100644
index 000000000..e40bdeb0b
--- /dev/null
+++ b/solr-8.1.1/licenses/.velocity-tools-generic-3.0.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.velocity-tools-generic-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.velocity-tools-generic-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..3ed93e440
--- /dev/null
+++ b/solr-8.1.1/licenses/.velocity-tools-generic-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.velocity-tools-view-3.0.jar 2.sha1.icloud b/solr-8.1.1/licenses/.velocity-tools-view-3.0.jar 2.sha1.icloud
new file mode 100644
index 000000000..69a073577
--- /dev/null
+++ b/solr-8.1.1/licenses/.velocity-tools-view-3.0.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.velocity-tools-view-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.velocity-tools-view-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..519dbd645
--- /dev/null
+++ b/solr-8.1.1/licenses/.velocity-tools-view-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.velocity-tools-view-jsp-3.0.jar 2.sha1.icloud b/solr-8.1.1/licenses/.velocity-tools-view-jsp-3.0.jar 2.sha1.icloud
new file mode 100644
index 000000000..888d55662
--- /dev/null
+++ b/solr-8.1.1/licenses/.velocity-tools-view-jsp-3.0.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.velocity-tools-view-jsp-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.velocity-tools-view-jsp-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..9926eb5d3
--- /dev/null
+++ b/solr-8.1.1/licenses/.velocity-tools-view-jsp-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.vorbis-java-core-0.8.jar 2.sha1.icloud b/solr-8.1.1/licenses/.vorbis-java-core-0.8.jar 2.sha1.icloud
new file mode 100644
index 000000000..8bdbd9520
--- /dev/null
+++ b/solr-8.1.1/licenses/.vorbis-java-core-0.8.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.vorbis-java-core-LICENSE-BSD_LIKE 2.txt.icloud b/solr-8.1.1/licenses/.vorbis-java-core-LICENSE-BSD_LIKE 2.txt.icloud
new file mode 100644
index 000000000..bcb11a5f1
--- /dev/null
+++ b/solr-8.1.1/licenses/.vorbis-java-core-LICENSE-BSD_LIKE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.vorbis-java-core-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.vorbis-java-core-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..190aac49a
--- /dev/null
+++ b/solr-8.1.1/licenses/.vorbis-java-core-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.vorbis-java-tika-0.8.jar 2.sha1.icloud b/solr-8.1.1/licenses/.vorbis-java-tika-0.8.jar 2.sha1.icloud
new file mode 100644
index 000000000..99ceb2550
--- /dev/null
+++ b/solr-8.1.1/licenses/.vorbis-java-tika-0.8.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.vorbis-java-tika-LICENSE-BSD_LIKE 2.txt.icloud b/solr-8.1.1/licenses/.vorbis-java-tika-LICENSE-BSD_LIKE 2.txt.icloud
new file mode 100644
index 000000000..528678230
--- /dev/null
+++ b/solr-8.1.1/licenses/.vorbis-java-tika-LICENSE-BSD_LIKE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.vorbis-java-tika-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.vorbis-java-tika-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..590141a0b
--- /dev/null
+++ b/solr-8.1.1/licenses/.vorbis-java-tika-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.woodstox-core-asl-4.4.1.jar 2.sha1.icloud b/solr-8.1.1/licenses/.woodstox-core-asl-4.4.1.jar 2.sha1.icloud
new file mode 100644
index 000000000..4078f4b4c
--- /dev/null
+++ b/solr-8.1.1/licenses/.woodstox-core-asl-4.4.1.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.woodstox-core-asl-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.woodstox-core-asl-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..c57642df3
--- /dev/null
+++ b/solr-8.1.1/licenses/.woodstox-core-asl-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.xercesImpl-2.9.1.jar 2.sha1.icloud b/solr-8.1.1/licenses/.xercesImpl-2.9.1.jar 2.sha1.icloud
new file mode 100644
index 000000000..b32dea3c0
--- /dev/null
+++ b/solr-8.1.1/licenses/.xercesImpl-2.9.1.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.xercesImpl-LICENSE-ASL 2.txt.icloud b/solr-8.1.1/licenses/.xercesImpl-LICENSE-ASL 2.txt.icloud
new file mode 100644
index 000000000..0cb88fe07
--- /dev/null
+++ b/solr-8.1.1/licenses/.xercesImpl-LICENSE-ASL 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.xercesImpl-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.xercesImpl-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..85c595429
--- /dev/null
+++ b/solr-8.1.1/licenses/.xercesImpl-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.xmlbeans-3.0.1.jar 2.sha1.icloud b/solr-8.1.1/licenses/.xmlbeans-3.0.1.jar 2.sha1.icloud
new file mode 100644
index 000000000..c0c0d14e2
--- /dev/null
+++ b/solr-8.1.1/licenses/.xmlbeans-3.0.1.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.xmlbeans-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.xmlbeans-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..9c4ea137f
--- /dev/null
+++ b/solr-8.1.1/licenses/.xmlbeans-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.xmpcore-5.1.3.jar 2.sha1.icloud b/solr-8.1.1/licenses/.xmpcore-5.1.3.jar 2.sha1.icloud
new file mode 100644
index 000000000..dd8a9ccbc
--- /dev/null
+++ b/solr-8.1.1/licenses/.xmpcore-5.1.3.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.xmpcore-LICENSE-BSD 2.txt.icloud b/solr-8.1.1/licenses/.xmpcore-LICENSE-BSD 2.txt.icloud
new file mode 100644
index 000000000..10e7b03ef
--- /dev/null
+++ b/solr-8.1.1/licenses/.xmpcore-LICENSE-BSD 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.xmpcore-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.xmpcore-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..225cb564d
--- /dev/null
+++ b/solr-8.1.1/licenses/.xmpcore-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.xz-1.8.jar 2.sha1.icloud b/solr-8.1.1/licenses/.xz-1.8.jar 2.sha1.icloud
new file mode 100644
index 000000000..8069a9112
--- /dev/null
+++ b/solr-8.1.1/licenses/.xz-1.8.jar 2.sha1.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.xz-LICENSE-PD 2.txt.icloud b/solr-8.1.1/licenses/.xz-LICENSE-PD 2.txt.icloud
new file mode 100644
index 000000000..1dfdf4a9b
--- /dev/null
+++ b/solr-8.1.1/licenses/.xz-LICENSE-PD 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.xz-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.xz-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..69df2818c
--- /dev/null
+++ b/solr-8.1.1/licenses/.xz-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr-8.1.1/licenses/.zookeeper-NOTICE 2.txt.icloud b/solr-8.1.1/licenses/.zookeeper-NOTICE 2.txt.icloud
new file mode 100644
index 000000000..927894054
--- /dev/null
+++ b/solr-8.1.1/licenses/.zookeeper-NOTICE 2.txt.icloud
Binary files differ
diff --git a/solr/conf/.params 2.json.icloud b/solr/conf/.params 2.json.icloud
new file mode 100644
index 000000000..c5bf58fca
--- /dev/null
+++ b/solr/conf/.params 2.json.icloud
Binary files differ
diff --git a/solr/conf/.protwords 2.txt.icloud b/solr/conf/.protwords 2.txt.icloud
new file mode 100644
index 000000000..7adc99218
--- /dev/null
+++ b/solr/conf/.protwords 2.txt.icloud
Binary files differ
diff --git a/solr/conf/.schema 2.xml.icloud b/solr/conf/.schema 2.xml.icloud
new file mode 100644
index 000000000..a70155bc8
--- /dev/null
+++ b/solr/conf/.schema 2.xml.icloud
Binary files differ
diff --git a/solr/conf/.stopwords 2.txt.icloud b/solr/conf/.stopwords 2.txt.icloud
new file mode 100644
index 000000000..528061d23
--- /dev/null
+++ b/solr/conf/.stopwords 2.txt.icloud
Binary files differ
diff --git a/solr/conf/.synonyms 2.txt.icloud b/solr/conf/.synonyms 2.txt.icloud
new file mode 100644
index 000000000..34c8c21dc
--- /dev/null
+++ b/solr/conf/.synonyms 2.txt.icloud
Binary files differ
diff --git a/solr/conf/lang/.contractions_ca 2.txt.icloud b/solr/conf/lang/.contractions_ca 2.txt.icloud
new file mode 100644
index 000000000..7a413f294
--- /dev/null
+++ b/solr/conf/lang/.contractions_ca 2.txt.icloud
Binary files differ
diff --git a/solr/conf/lang/.contractions_fr 2.txt.icloud b/solr/conf/lang/.contractions_fr 2.txt.icloud
new file mode 100644
index 000000000..898cc1f63
--- /dev/null
+++ b/solr/conf/lang/.contractions_fr 2.txt.icloud
Binary files differ
diff --git a/solr/conf/lang/.hyphenations_ga 2.txt.icloud b/solr/conf/lang/.hyphenations_ga 2.txt.icloud
new file mode 100644
index 000000000..d20b400c8
--- /dev/null
+++ b/solr/conf/lang/.hyphenations_ga 2.txt.icloud
Binary files differ
diff --git a/solr/conf/lang/.stemdict_nl 2.txt.icloud b/solr/conf/lang/.stemdict_nl 2.txt.icloud
new file mode 100644
index 000000000..7eacaf06c
--- /dev/null
+++ b/solr/conf/lang/.stemdict_nl 2.txt.icloud
Binary files differ
diff --git a/solr/conf/lang/.stopwords_ar 2.txt.icloud b/solr/conf/lang/.stopwords_ar 2.txt.icloud
new file mode 100644
index 000000000..a3f257a99
--- /dev/null
+++ b/solr/conf/lang/.stopwords_ar 2.txt.icloud
Binary files differ
diff --git a/solr/conf/lang/.stopwords_ca 2.txt.icloud b/solr/conf/lang/.stopwords_ca 2.txt.icloud
new file mode 100644
index 000000000..21076dd40
--- /dev/null
+++ b/solr/conf/lang/.stopwords_ca 2.txt.icloud
Binary files differ
diff --git a/solr/conf/lang/.stopwords_cz 2.txt.icloud b/solr/conf/lang/.stopwords_cz 2.txt.icloud
new file mode 100644
index 000000000..4f3819a84
--- /dev/null
+++ b/solr/conf/lang/.stopwords_cz 2.txt.icloud
Binary files differ
diff --git a/solr/conf/lang/.stopwords_el 2.txt.icloud b/solr/conf/lang/.stopwords_el 2.txt.icloud
new file mode 100644
index 000000000..490a85826
--- /dev/null
+++ b/solr/conf/lang/.stopwords_el 2.txt.icloud
Binary files differ
diff --git a/solr/conf/lang/.stopwords_en 2.txt.icloud b/solr/conf/lang/.stopwords_en 2.txt.icloud
new file mode 100644
index 000000000..c87ac3740
--- /dev/null
+++ b/solr/conf/lang/.stopwords_en 2.txt.icloud
Binary files differ
diff --git a/solr/conf/lang/.stopwords_eu 2.txt.icloud b/solr/conf/lang/.stopwords_eu 2.txt.icloud
new file mode 100644
index 000000000..2730e46fc
--- /dev/null
+++ b/solr/conf/lang/.stopwords_eu 2.txt.icloud
Binary files differ
diff --git a/solr/conf/lang/.stopwords_fa 2.txt.icloud b/solr/conf/lang/.stopwords_fa 2.txt.icloud
new file mode 100644
index 000000000..14c05e6b8
--- /dev/null
+++ b/solr/conf/lang/.stopwords_fa 2.txt.icloud
Binary files differ
diff --git a/solr/conf/lang/.stopwords_hi 2.txt.icloud b/solr/conf/lang/.stopwords_hi 2.txt.icloud
new file mode 100644
index 000000000..be1c06e44
--- /dev/null
+++ b/solr/conf/lang/.stopwords_hi 2.txt.icloud
Binary files differ
diff --git a/solr/conf/lang/.stopwords_id 2.txt.icloud b/solr/conf/lang/.stopwords_id 2.txt.icloud
new file mode 100644
index 000000000..b4d31653f
--- /dev/null
+++ b/solr/conf/lang/.stopwords_id 2.txt.icloud
Binary files differ
diff --git a/solr/conf/lang/.stopwords_ja 2.txt.icloud b/solr/conf/lang/.stopwords_ja 2.txt.icloud
new file mode 100644
index 000000000..29ba175e8
--- /dev/null
+++ b/solr/conf/lang/.stopwords_ja 2.txt.icloud
Binary files differ
diff --git a/solr/conf/lang/.stopwords_lv 2.txt.icloud b/solr/conf/lang/.stopwords_lv 2.txt.icloud
new file mode 100644
index 000000000..28b8bc40d
--- /dev/null
+++ b/solr/conf/lang/.stopwords_lv 2.txt.icloud
Binary files differ
diff --git a/solr/conf/lang/.stopwords_ro 2.txt.icloud b/solr/conf/lang/.stopwords_ro 2.txt.icloud
new file mode 100644
index 000000000..74b4cdcc3
--- /dev/null
+++ b/solr/conf/lang/.stopwords_ro 2.txt.icloud
Binary files differ
diff --git a/solr/conf/lang/.stopwords_tr 2.txt.icloud b/solr/conf/lang/.stopwords_tr 2.txt.icloud
new file mode 100644
index 000000000..1a6d89916
--- /dev/null
+++ b/solr/conf/lang/.stopwords_tr 2.txt.icloud
Binary files differ
diff --git a/solr/conf/lang/.userdict_ja 2.txt.icloud b/solr/conf/lang/.userdict_ja 2.txt.icloud
new file mode 100644
index 000000000..d08bbe310
--- /dev/null
+++ b/solr/conf/lang/.userdict_ja 2.txt.icloud
Binary files differ
diff --git a/src/client/.Network 2.ts.icloud b/src/client/.Network 2.ts.icloud
new file mode 100644
index 000000000..25bffdbc3
--- /dev/null
+++ b/src/client/.Network 2.ts.icloud
Binary files differ
diff --git a/src/client/.goldenLayout.d 2.ts.icloud b/src/client/.goldenLayout.d 2.ts.icloud
new file mode 100644
index 000000000..c2ee8a2f5
--- /dev/null
+++ b/src/client/.goldenLayout.d 2.ts.icloud
Binary files differ
diff --git a/src/client/documents/Documents.ts b/src/client/documents/Documents.ts
index 10879d1e3..92d6cd9cd 100644
--- a/src/client/documents/Documents.ts
+++ b/src/client/documents/Documents.ts
@@ -76,7 +76,8 @@ export interface DocumentOptions {
viewType?: number;
backgroundColor?: string;
ignoreClick?: boolean;
- lockedPosition?: boolean;
+ lockedPosition?: boolean; // lock the x,y coordinates of the document so that it can't be dragged
+ lockedTransform?: boolean; // lock the panx,pany and scale parameters of the document so that it be panned/zoomed
opacity?: number;
defaultBackgroundColor?: string;
dropAction?: dropActionType;
diff --git a/src/client/util/RichTextSchema.tsx b/src/client/util/RichTextSchema.tsx
index 76b8aeaa1..0a717dff1 100644
--- a/src/client/util/RichTextSchema.tsx
+++ b/src/client/util/RichTextSchema.tsx
@@ -18,7 +18,6 @@ import { Transform } from "./Transform";
import React = require("react");
import { BoolCast, NumCast } from "../../new_fields/Types";
import { FormattedTextBox } from "../views/nodes/FormattedTextBox";
-import { CurrentUserUtils } from "../../server/authentication/models/current_user_utils";
const pDOM: DOMOutputSpecArray = ["p", 0], blockquoteDOM: DOMOutputSpecArray = ["blockquote", 0], hrDOM: DOMOutputSpecArray = ["hr"],
preDOM: DOMOutputSpecArray = ["pre", ["code", 0]], brDOM: DOMOutputSpecArray = ["br"], ulDOM: DOMOutputSpecArray = ["ul", 0];
@@ -130,6 +129,7 @@ export const nodes: { [index: string]: NodeSpec } = {
// }
// }]
},
+
// :: NodeSpec An inline image (`<img>`) node. Supports `src`,
// `alt`, and `href` attributes. The latter two default to the empty
// string.
@@ -310,6 +310,37 @@ export const marks: { [index: string]: MarkSpec } = {
}
},
+ // :: MarkSpec Coloring on text. Has `color` attribute that defined the color of the marked text.
+ color: {
+ attrs: {
+ color: { default: "#000" }
+ },
+ inclusive: false,
+ parseDOM: [{
+ tag: "span", getAttrs(dom: any) {
+ return { color: dom.getAttribute("color") };
+ }
+ }],
+ toDOM(node: any) {
+ return node.attrs.color ? ['span', { style: 'color:' + node.attrs.color }] : ['span', { style: 'color: black' }];
+ }
+ },
+
+ marker: {
+ attrs: {
+ highlight: { default: "transparent" }
+ },
+ inclusive: false,
+ parseDOM: [{
+ tag: "span", getAttrs(dom: any) {
+ return { highlight: dom.getAttribute("backgroundColor") };
+ }
+ }],
+ toDOM(node: any) {
+ return node.attrs.highlight ? ['span', { style: 'background-color:' + node.attrs.highlight }] : ['span', { style: 'background-color: transparent' }];
+ }
+ },
+
// :: MarkSpec An emphasis mark. Rendered as an `<em>` element.
// Has parse rules that also match `<i>` and `font-style: italic`.
em: {
@@ -576,8 +607,8 @@ export class ImageResizeView {
this._handle.onpointerdown = function (e: any) {
e.preventDefault();
e.stopPropagation();
- let wid = Number(getComputedStyle(self._img).width!.replace(/px/, ""));
- let hgt = Number(getComputedStyle(self._img).height!.replace(/px/, ""));
+ let wid = Number(getComputedStyle(self._img).width.replace(/px/, ""));
+ let hgt = Number(getComputedStyle(self._img).height.replace(/px/, ""));
const startX = e.pageX;
const startWidth = parseFloat(node.attrs.width);
const onpointermove = (e: any) => {
@@ -680,6 +711,7 @@ export class DashDocView {
bringToFront={emptyFunction}
zoomToScale={emptyFunction}
getScale={returnOne}
+ dontRegisterView={true}
ContainingCollectionView={undefined}
ContainingCollectionDoc={undefined}
ContentScaling={this.contentScaling}
diff --git a/src/client/util/SearchUtil.ts b/src/client/util/SearchUtil.ts
index 6706dcb89..2cf13680a 100644
--- a/src/client/util/SearchUtil.ts
+++ b/src/client/util/SearchUtil.ts
@@ -28,6 +28,7 @@ export namespace SearchUtil {
start?: number;
rows?: number;
fq?: string;
+ allowAliases?: boolean;
}
export function Search(query: string, returnDocs: true, options?: SearchParams): Promise<DocSearchResult>;
export function Search(query: string, returnDocs: false, options?: SearchParams): Promise<IdSearchResult>;
@@ -73,7 +74,7 @@ export namespace SearchUtil {
const docs = ids.map((id: string) => docMap[id]).map(doc => doc as Doc);
for (let i = 0; i < ids.length; i++) {
let testDoc = docs[i];
- if (testDoc instanceof Doc && testDoc.type !== DocumentType.KVP && theDocs.findIndex(d => Doc.AreProtosEqual(d, testDoc)) === -1) {
+ if (testDoc instanceof Doc && testDoc.type !== DocumentType.KVP && (options.allowAliases || theDocs.findIndex(d => Doc.AreProtosEqual(d, testDoc)) === -1)) {
theDocs.push(testDoc);
theLines.push([]);
}
@@ -88,9 +89,9 @@ export namespace SearchUtil {
const proto = Doc.GetProto(doc);
const protoId = proto[Id];
if (returnDocs) {
- return (await Search("", returnDocs, { fq: `proto_i:"${protoId}"` })).docs;
+ return (await Search("", returnDocs, { fq: `proto_i:"${protoId}"`, allowAliases: true })).docs;
} else {
- return (await Search("", returnDocs, { fq: `proto_i:"${protoId}"` })).ids;
+ return (await Search("", returnDocs, { fq: `proto_i:"${protoId}"`, allowAliases: true })).ids;
}
// return Search(`{!join from=id to=proto_i}id:${protoId}`, true);
}
diff --git a/src/client/util/TooltipTextMenu.scss b/src/client/util/TooltipTextMenu.scss
index ebf833dbe..8310a0da6 100644
--- a/src/client/util/TooltipTextMenu.scss
+++ b/src/client/util/TooltipTextMenu.scss
@@ -1,100 +1,62 @@
@import "../views/globalCssVariables";
-
-.ProseMirror-textblock-dropdown {
- min-width: 3em;
- }
-
- .ProseMirror-menu {
- margin: 0 -4px;
- line-height: 1;
- }
-
- .ProseMirror-tooltip .ProseMirror-menu {
- width: -webkit-fit-content;
- width: fit-content;
- white-space: pre;
- }
-
- .ProseMirror-menuitem {
- margin-right: 3px;
+.ProseMirror-menu-dropdown-wrap {
display: inline-block;
- z-index: 50000;
position: relative;
- }
-
- .ProseMirror-menuseparator {
- // border-right: 1px solid #ddd;
- margin-right: 3px;
- }
-
- .ProseMirror-menu-dropdown, .ProseMirror-menu-dropdown-menu {
- font-size: 90%;
- white-space: nowrap;
- }
+}
- .ProseMirror-menu-dropdown {
+.ProseMirror-menu-dropdown {
vertical-align: 1px;
cursor: pointer;
position: relative;
- padding-right: 15px;
- margin: 3px;
+ padding: 0 15px 0 4px;
background: white;
- border-radius: 3px;
- text-align: center;
- }
-
- .ProseMirror-menu-dropdown-wrap {
- padding: 1px 0 1px 4px;
- display: inline-block;
+ border-radius: 2px;
+ text-align: left;
+ font-size: 12px;
+ white-space: nowrap;
+ margin-right: 4px;
+
+ &:after {
+ content: "";
+ border-left: 4px solid transparent;
+ border-right: 4px solid transparent;
+ border-top: 4px solid currentColor;
+ opacity: .6;
+ position: absolute;
+ right: 4px;
+ top: calc(50% - 2px);
+ }
+}
+
+.ProseMirror-menu-submenu-wrap {
position: relative;
- }
-
- .ProseMirror-menu-dropdown:after {
- content: "";
- border-left: 4px solid transparent;
- border-right: 4px solid transparent;
- border-top: 4px solid currentColor;
- opacity: .6;
- position: absolute;
- right: 4px;
- top: calc(50% - 2px);
- }
-
- .ProseMirror-menu-dropdown-menu, .ProseMirror-menu-submenu {
- background: $dark-color;
- color:white;
+ margin-right: -4px;
+}
+
+.ProseMirror-menu-dropdown-menu,
+.ProseMirror-menu-submenu {
+ font-size: 12px;
+ background: white;
border: 1px solid rgb(223, 223, 223);
- padding: 2px;
- }
-
- .ProseMirror-menu-dropdown-menu {
+ min-width: 40px;
z-index: 50000;
- min-width: 6em;
- background: white;
position: absolute;
- }
-
- .linking {
- text-align: center;
- }
+ box-sizing: content-box;
- .ProseMirror-menu-dropdown-item {
- cursor: pointer;
- padding: 2px 8px 2px 4px;
- width: auto;
- z-index: 100000;
- }
-
- .ProseMirror-menu-dropdown-item:hover {
- background: white;
- }
-
- .ProseMirror-menu-submenu-wrap {
- position: relative;
- margin-right: -4px;
- }
-
- .ProseMirror-menu-submenu-label:after {
+ .ProseMirror-menu-dropdown-item {
+ cursor: pointer;
+ z-index: 100000;
+ text-align: left;
+ padding: 3px;
+
+ &:hover {
+ background-color: $light-color-secondary;
+ }
+ }
+}
+
+
+.ProseMirror-menu-submenu-label:after {
content: "";
border-top: 4px solid transparent;
border-bottom: 4px solid transparent;
@@ -103,153 +65,51 @@
position: absolute;
right: 4px;
top: calc(50% - 4px);
- }
-
- .ProseMirror-menu-submenu {
- display: none;
- min-width: 4em;
- left: 100%;
- top: -3px;
- }
-
- .ProseMirror-menu-active {
- background: #eee;
- border-radius: 4px;
- }
-
- .ProseMirror-menu-active {
- background: #eee;
- border-radius: 4px;
- }
-
- .ProseMirror-menu-disabled {
- opacity: .3;
- }
-
- .ProseMirror-menu-submenu-wrap:hover .ProseMirror-menu-submenu, .ProseMirror-menu-submenu-wrap-active .ProseMirror-menu-submenu {
- display: block;
- }
-
- .ProseMirror-menubar {
- border-top-left-radius: inherit;
- border-top-right-radius: inherit;
- position: relative;
- min-height: 1em;
- color: white;
- padding: 10px 10px;
- top: 0; left: 0; right: 0;
- border-bottom: 1px solid silver;
- background:$dark-color;
- z-index: 10;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
- overflow: visible;
- }
+}
.ProseMirror-icon {
display: inline-block;
- line-height: .8;
- vertical-align: -2px; /* Compensate for padding */
- padding: 2px 8px;
+ // line-height: .8;
+ // vertical-align: -2px; /* Compensate for padding */
+ // padding: 2px 8px;
cursor: pointer;
- }
-
- .ProseMirror-menu-disabled.ProseMirror-icon {
- cursor: default;
- }
-
- .ProseMirror-icon svg {
- fill:white;
- height: 1em;
- }
-
- .ProseMirror-icon span {
- vertical-align: text-top;
- }
-
- .ProseMirror ul, .ProseMirror ol {
- padding-left: 30px;
- }
-
- .ProseMirror blockquote {
- padding-left: 1em;
- border-left: 3px solid #eee;
- margin-left: 0; margin-right: 0;
- }
-
- .ProseMirror-example-setup-style img {
- cursor: default;
- }
-
- .ProseMirror-prompt {
- background: white;
- padding: 5px 10px 5px 15px;
- border: 1px solid silver;
- position: fixed;
- border-radius: 3px;
- z-index: 11;
- box-shadow: -.5px 2px 5px white(255, 255, 255, 0.2);
- }
-
- .ProseMirror-prompt h5 {
- margin: 0;
- font-weight: normal;
- font-size: 100%;
- color: #444;
- }
-
- .ProseMirror-prompt input[type="text"],
- .ProseMirror-prompt textarea {
- background: white;
- border: none;
- outline: none;
- }
-
- .ProseMirror-prompt input[type="text"] {
- padding: 0 4px;
- }
-
- .ProseMirror-prompt-close {
- position: absolute;
- left: 2px; top: 1px;
- color: #666;
- border: none; background: transparent; padding: 0;
- }
-
- .ProseMirror-prompt-close:after {
- content: "✕";
- font-size: 12px;
- }
-
- .ProseMirror-invalid {
- background: #ffc;
- border: 1px solid #cc7;
- border-radius: 4px;
- padding: 5px 10px;
- position: absolute;
- min-width: 10em;
- }
-
- .ProseMirror-prompt-buttons {
- margin-top: 5px;
- display: none;
+
+ &.ProseMirror-menu-disabled {
+ cursor: default;
+ }
+
+ svg {
+ fill:white;
+ height: 1em;
+ }
+
+ span {
+ vertical-align: text-top;
+ }
}
-.tooltipMenu {
+.wrapper {
position: absolute;
- z-index: 20000;
- background: #121721;
- border: 1px solid silver;
- border-radius: 15px;
- //height: 60px;
- //padding: 2px 10px;
- //margin-top: 100px;
- //-webkit-transform: translateX(-50%);
- //transform: translateX(-50%);
+ pointer-events: all;
+ display: flex;
+ align-items: center;
transform: translateY(-85px);
+
+ height: 35px;
+ background: #323232;
+ border-radius: 6px;
+ box-shadow: 3px 3px 3px rgba(0, 0, 0, 0.25);
+
+}
+
+.tooltipMenu, .basic-tools {
+ z-index: 20000;
pointer-events: all;
- height: fit-content;
- width:550px;
+ padding: 3px;
+ padding-bottom: 5px;
+ display: flex;
+ align-items: center;
+
.ProseMirror-example-setup-style hr {
padding: 2px 10px;
border: none;
@@ -265,60 +125,89 @@
}
}
-.tooltipExtras {
- position: absolute;
- z-index: 20000;
- background: #121721;
- border: 1px solid silver;
- border-radius: 15px;
- //height: 60px;
- //padding: 2px 10px;
- //margin-top: 100px;
- //-webkit-transform: translateX(-50%);
- //transform: translateX(-50%);
- transform: translateY(-115px);
- pointer-events: all;
+.menuicon {
+ width: 25px;
height: 25px;
- width:fit-content;
- .ProseMirror-example-setup-style hr {
- padding: 2px 10px;
- border: none;
- margin: 1em 0;
+ cursor: pointer;
+ text-align: center;
+ line-height: 25px;
+ margin: 0 2px;
+ border-radius: 3px;
+
+ &:hover {
+ background-color: black;
+
+ #link-drag {
+ background-color: black;
+ }
}
-
- .ProseMirror-example-setup-style hr:after {
- content: "";
- display: block;
- height: 1px;
- background-color: silver;
- line-height: 2px;
+
+ &> * {
+ margin-top: 50%;
+ margin-left: 50%;
+ transform: translate(-50%, -50%);
}
-}
-.wrapper {
- position: absolute;
- pointer-events: all;
+ svg {
+ fill: white;
+ width: 18px;
+ height: 18px;
+ }
}
- .menuicon {
- display: inline-block;
- border-right: 1px solid white(0, 0, 0, 0.2);
- //color: rgb(19, 18, 18);
- color: rgb(226, 21, 21);
- line-height: 1;
- padding: 0px 2px;
- margin: 1px;
+.menuicon-active {
+ width: 25px;
+ height: 25px;
cursor: pointer;
text-align: center;
- min-width: 10px;
-
- }
- .strong, .heading { font-weight: bold; }
- .em { font-style: italic; }
- .underline {text-decoration: underline}
- .superscript {vertical-align:super}
- .subscript { vertical-align:sub }
- .strikethrough {text-decoration-line:line-through}
+ line-height: 25px;
+ margin: 0 2px;
+ border-radius: 3px;
+
+ &:hover {
+ background-color: black;
+ }
+
+ &> * {
+ margin-top: 50%;
+ margin-left: 50%;
+ transform: translate(-50%, -50%);
+ }
+
+ svg {
+ fill: greenyellow;
+ width: 18px;
+ height: 18px;
+ }
+}
+
+#colorPicker {
+ position: relative;
+
+ svg {
+ width: 18px;
+ height: 18px;
+ // margin-top: 11px;
+ }
+
+ .buttonColor {
+ position: absolute;
+ top: 24px;
+ left: 1px;
+ width: 24px;
+ height: 4px;
+ margin-top: 0;
+ }
+}
+
+#link-drag {
+ background-color: #323232;
+}
+
+.underline svg {
+ margin-top: 13px;
+}
+
.font-size-indicator {
font-size: 12px;
padding-right: 0px;
@@ -328,8 +217,9 @@
height: 20px;
text-align: center;
}
+
- .brush{
+.brush{
display: inline-block;
width: 1em;
height: 1em;
@@ -337,19 +227,146 @@
stroke: currentColor;
fill: currentColor;
margin-right: 15px;
- }
+}
- .brush-active{
+.brush-active{
display: inline-block;
width: 1em;
height: 1em;
stroke-width: 3;
- stroke: greenyellow;
fill: greenyellow;
margin-right: 15px;
- }
+}
+
+.dragger-wrapper {
+ color: #eee;
+ height: 22px;
+ padding: 0 5px;
+ box-sizing: content-box;
+ cursor: grab;
- .dragger{
- color: #eee;
- margin-left: 5px;
- } \ No newline at end of file
+ .dragger {
+ width: 18px;
+ height: 100%;
+ display: flex;
+ justify-content: space-evenly;
+ }
+
+ .dragger-line {
+ width: 2px;
+ height: 100%;
+ background-color: black;
+ }
+}
+
+.button-dropdown-wrapper {
+ display: flex;
+ align-content: center;
+
+ &:hover {
+ background-color: black;
+ }
+}
+
+.buttonSettings-dropdown {
+
+ &.ProseMirror-menu-dropdown {
+ width: 10px;
+ height: 25px;
+ margin: 0;
+ padding: 0 2px;
+ background-color: #323232;
+ text-align: center;
+
+ &:after {
+ border-top: 4px solid white;
+ right: 2px;
+ }
+
+ &:hover {
+ background-color: black;
+ }
+ }
+
+ &.ProseMirror-menu-dropdown-menu {
+ min-width: 150px;
+ left: -27px;
+ top: 31px;
+ background-color: #323232;
+ border: 1px solid #4d4d4d;
+ color: $light-color-secondary;
+ // border: none;
+ // border: 1px solid $light-color-secondary;
+ border-radius: 0 6px 6px 6px;
+ padding: 3px;
+ box-shadow: 3px 3px 3px rgba(0, 0, 0, 0.25);
+
+ .ProseMirror-menu-dropdown-item{
+ cursor: default;
+
+ &:last-child {
+ border-bottom: none;
+ }
+
+ &:hover {
+ background-color: #323232;
+ }
+
+ .button-setting, .button-setting-disabled {
+ padding: 2px;
+ border-radius: 2px;
+ }
+
+ .button-setting:hover {
+ cursor: pointer;
+ background-color: black;
+ }
+
+ .separated-button {
+ border-top: 1px solid $light-color-secondary;
+ padding-top: 6px;
+ }
+
+ input {
+ color: black;
+ border: none;
+ border-radius: 1px;
+ padding: 3px;
+ }
+
+ button {
+ padding: 6px;
+ background-color: #323232;
+ border: 1px solid black;
+ border-radius: 1px;
+
+ &:hover {
+ background-color: black;
+ }
+ }
+ }
+
+
+ }
+}
+
+.colorPicker-wrapper {
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: space-between;
+ margin-top: 3px;
+ margin-left: -3px;
+ width: calc(100% + 6px);
+}
+
+button.colorPicker {
+ width: 20px;
+ height: 20px;
+ border-radius: 15px !important;
+ margin: 3px;
+ border: none !important;
+
+ &.active {
+ border: 2px solid white !important;
+ }
+} \ No newline at end of file
diff --git a/src/client/util/TooltipTextMenu.tsx b/src/client/util/TooltipTextMenu.tsx
index 38471a955..5136089b3 100644
--- a/src/client/util/TooltipTextMenu.tsx
+++ b/src/client/util/TooltipTextMenu.tsx
@@ -1,6 +1,4 @@
-import { library } from '@fortawesome/fontawesome-svg-core';
-import { faListUl } from '@fortawesome/free-solid-svg-icons';
-import { action, observable } from "mobx";
+import { action } from "mobx";
import { Dropdown, icons, MenuItem } from "prosemirror-menu"; //no import css
import { Mark, MarkType, Node as ProsNode, NodeType, ResolvedPos, Schema } from "prosemirror-model";
import { wrapInList } from 'prosemirror-schema-list';
@@ -20,97 +18,100 @@ import "./TooltipTextMenu.scss";
import { Cast, NumCast, StrCast } from '../../new_fields/Types';
import { updateBullets } from './ProsemirrorExampleTransfer';
import { DocumentDecorations } from '../views/DocumentDecorations';
+import { SelectionManager } from './SelectionManager';
+import { PastelSchemaPalette, DarkPastelSchemaPalette } from '../../new_fields/SchemaHeaderField';
const { toggleMark, setBlockType } = require("prosemirror-commands");
const { openPrompt, TextField } = require("./ProsemirrorCopy/prompt.js");
//appears above a selection of text in a RichTextBox to give user options such as Bold, Italics, etc.
export class TooltipTextMenu {
- public tooltip: HTMLElement;
+ public static Toolbar: HTMLDivElement | undefined;
+
+ // editor state properties
private view: EditorView;
private editorProps: FieldViewProps & FormattedTextBoxProps | undefined;
- private listTypes: (NodeType | any)[];
- private fontSizes: Mark[] = [];
+
private fontStyles: Mark[] = [];
- private listTypeToIcon: Map<NodeType | any, string>;
- //private link: HTMLAnchorElement;
- private wrapper: HTMLDivElement;
- private extras: HTMLDivElement;
+ private fontSizes: Mark[] = [];
+ private listTypes: (NodeType | any)[] = [];
+ private listTypeToIcon: Map<NodeType | any, string> = new Map();
+ private _activeMarks: Mark[] = [];
+ private _marksToDoms: Map<Mark, HTMLSpanElement> = new Map();
+ private _collapsed: boolean = false;
+ // editor doms
+ public tooltip: HTMLElement = document.createElement("div");
+ private wrapper: HTMLDivElement = document.createElement("div");
+
+ // editor button doms
+ private colorDom?: Node;
+ private colorDropdownDom?: Node;
+ private highlightDom?: Node;
+ private highlightDropdownDom?: Node;
private linkEditor?: HTMLDivElement;
private linkText?: HTMLDivElement;
private linkDrag?: HTMLImageElement;
- //dropdown doms
+ private _linkDropdownDom?: Node;
+ private _brushdom?: Node;
+ private _brushDropdownDom?: Node;
private fontSizeDom?: Node;
private fontStyleDom?: Node;
private listTypeBtnDom?: Node;
+ private basicTools?: HTMLElement;
- private _activeMarks: Mark[] = [];
-
- private _collapseBtn?: MenuItem;
-
- private _brushMarks?: Set<Mark>;
- private _brushIsEmpty: boolean = true;
- private _brushdom?: Node;
-
- private _marksToDoms: Map<Mark, HTMLSpanElement> = new Map();
-
- private _collapsed: boolean = false;
constructor(view: EditorView) {
this.view = view;
- this.wrapper = document.createElement("div");
- this.tooltip = document.createElement("div");
- this.extras = document.createElement("div");
-
- this.wrapper.appendChild(this.extras);
- this.wrapper.appendChild(this.tooltip);
+ // initialize the tooltip -- sets this.tooltip
+ this.initTooltip(view);
- this.tooltip.className = "tooltipMenu";
- this.extras.className = "tooltipExtras";
+ // initialize the wrapper
+ this.wrapper = document.createElement("div");
this.wrapper.className = "wrapper";
+ this.wrapper.appendChild(this.tooltip);
- const dragger = document.createElement("span");
- dragger.className = "dragger";
- dragger.textContent = ">>>";
- this.extras.appendChild(dragger);
+ // initialize the dragger -- appends it to the wrapper
+ this.createDragger();
- this.dragElement(dragger);
+ TooltipTextMenu.Toolbar = this.wrapper;
+ }
- // this.createCollapse();
- // if (this._collapseBtn) {
- // this.tooltip.appendChild(this._collapseBtn.render(this.view).dom);
- // }
- //add the div which is the tooltip
- //view.dom.parentNode!.parentNode!.appendChild(this.tooltip);
+ private async initTooltip(view: EditorView) {
+ // initialize tooltip dom
+ this.tooltip = document.createElement("div");
+ this.tooltip.className = "tooltipMenu";
+ this.basicTools = document.createElement("div");
+ this.basicTools.className = "basic-tools";
- //add additional icons
- library.add(faListUl);
- //add the buttons to the tooltip
+ // init buttons to the tooltip -- paths to svgs are obtained from fontawesome
let items = [
- { command: toggleMark(schema.marks.strong), dom: this.icon("B", "strong", "Bold") },
- { command: toggleMark(schema.marks.em), dom: this.icon("i", "em", "Italic") },
- { command: toggleMark(schema.marks.underline), dom: this.icon("U", "underline", "Underline") },
- { command: toggleMark(schema.marks.strikethrough), dom: this.icon("S", "strikethrough", "Strikethrough") },
- { command: toggleMark(schema.marks.superscript), dom: this.icon("s", "superscript", "Superscript") },
- { command: toggleMark(schema.marks.subscript), dom: this.icon("s", "subscript", "Subscript") },
- { command: toggleMark(schema.marks.highlight), dom: this.icon("H", 'blue', 'Blue') }
+ { command: toggleMark(schema.marks.strong), dom: this.svgIcon("strong", "Bold", "M333.49 238a122 122 0 0 0 27-65.21C367.87 96.49 308 32 233.42 32H34a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h31.87v288H34a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h209.32c70.8 0 134.14-51.75 141-122.4 4.74-48.45-16.39-92.06-50.83-119.6zM145.66 112h87.76a48 48 0 0 1 0 96h-87.76zm87.76 288h-87.76V288h87.76a56 56 0 0 1 0 112z") },
+ { command: toggleMark(schema.marks.em), dom: this.svgIcon("em", "Italic", "M320 48v32a16 16 0 0 1-16 16h-62.76l-80 320H208a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h62.76l80-320H112a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h192a16 16 0 0 1 16 16z") },
+ { command: toggleMark(schema.marks.underline), dom: this.svgIcon("underline", "Underline", "M32 64h32v160c0 88.22 71.78 160 160 160s160-71.78 160-160V64h32a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16H272a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32v160a80 80 0 0 1-160 0V64h32a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16H32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm400 384H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z") },
+ { command: toggleMark(schema.marks.strikethrough), dom: this.svgIcon("strikethrough", "Strikethrough", "M496 224H293.9l-87.17-26.83A43.55 43.55 0 0 1 219.55 112h66.79A49.89 49.89 0 0 1 331 139.58a16 16 0 0 0 21.46 7.15l42.94-21.47a16 16 0 0 0 7.16-21.46l-.53-1A128 128 0 0 0 287.51 32h-68a123.68 123.68 0 0 0-123 135.64c2 20.89 10.1 39.83 21.78 56.36H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h480a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-180.24 96A43 43 0 0 1 336 356.45 43.59 43.59 0 0 1 292.45 400h-66.79A49.89 49.89 0 0 1 181 372.42a16 16 0 0 0-21.46-7.15l-42.94 21.47a16 16 0 0 0-7.16 21.46l.53 1A128 128 0 0 0 224.49 480h68a123.68 123.68 0 0 0 123-135.64 114.25 114.25 0 0 0-5.34-24.36z") },
+ { command: toggleMark(schema.marks.superscript), dom: this.svgIcon("superscript", "Superscript", "M496 160h-16V16a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 400 64h16v96h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM336 64h-67a16 16 0 0 0-13.14 6.87l-79.9 115-79.9-115A16 16 0 0 0 83 64H16A16 16 0 0 0 0 80v48a16 16 0 0 0 16 16h33.48l77.81 112-77.81 112H16a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h67a16 16 0 0 0 13.14-6.87l79.9-115 79.9 115A16 16 0 0 0 269 448h67a16 16 0 0 0 16-16v-48a16 16 0 0 0-16-16h-33.48l-77.81-112 77.81-112H336a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16z") },
+ { command: toggleMark(schema.marks.subscript), dom: this.svgIcon("subscript", "Subscript", "M496 448h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 400 352h16v96h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM336 64h-67a16 16 0 0 0-13.14 6.87l-79.9 115-79.9-115A16 16 0 0 0 83 64H16A16 16 0 0 0 0 80v48a16 16 0 0 0 16 16h33.48l77.81 112-77.81 112H16a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h67a16 16 0 0 0 13.14-6.87l79.9-115 79.9 115A16 16 0 0 0 269 448h67a16 16 0 0 0 16-16v-48a16 16 0 0 0-16-16h-33.48l-77.81-112 77.81-112H336a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16z") },
+ // { command: toggleMark(schema.marks.highlight), dom: this.icon("H", 'blue', 'Blue') }
];
+ // add menu items
this._marksToDoms = new Map();
- //add menu items
items.forEach(({ dom, command }) => {
this.tooltip.appendChild(dom);
switch (dom.title) {
case "Bold":
this._marksToDoms.set(schema.mark(schema.marks.strong), dom);
+ this.basicTools && this.basicTools.appendChild(dom.cloneNode(true));
break;
case "Italic":
this._marksToDoms.set(schema.mark(schema.marks.em), dom);
+ this.basicTools && this.basicTools.appendChild(dom.cloneNode(true));
break;
case "Underline":
this._marksToDoms.set(schema.mark(schema.marks.underline), dom);
+ this.basicTools && this.basicTools.appendChild(dom.cloneNode(true));
break;
}
@@ -129,10 +130,50 @@ export class TooltipTextMenu {
});
});
+
+ // highlight menu
+ this.highlightDom = this.createHighlightTool().render(this.view).dom;
+ this.highlightDropdownDom = this.createHighlightDropdown().render(this.view).dom;
+ this.tooltip.appendChild(this.highlightDom);
+ this.tooltip.appendChild(this.highlightDropdownDom);
+
+ // color menu
+ this.colorDom = this.createColorTool().render(this.view).dom;
+ this.colorDropdownDom = this.createColorDropdown().render(this.view).dom;
+ this.tooltip.appendChild(this.colorDom);
+ this.tooltip.appendChild(this.colorDropdownDom);
+
+ // link menu
this.updateLinkMenu();
+ let dropdown = await this.createLinkDropdown();
+ this._linkDropdownDom = dropdown.render(this.view).dom;
+ this.tooltip.appendChild(this._linkDropdownDom);
+
+ // list of font styles
+ this.initFontStyles();
+
+ // font sizes
+ this.initFontSizes();
+
+ // list types
+ this.initListTypes();
+
+ // init brush tool
+ this._brushdom = this.createBrush().render(this.view).dom;
+ this.tooltip.appendChild(this._brushdom);
+ this._brushDropdownDom = this.createBrushDropdown().render(this.view).dom;
+ this.tooltip.appendChild(this._brushDropdownDom);
+
+ // star
+ this.tooltip.appendChild(this.createStar().render(this.view).dom);
+
+ // list types dropdown
+ this.updateListItemDropdown(":", this.listTypeBtnDom);
+ await this.updateFromDash(view, undefined, undefined);
+ }
- //list of font styles
+ initFontStyles() {
this.fontStyles.push(schema.marks.pFontFamily.create({ family: "Times New Roman" }));
this.fontStyles.push(schema.marks.pFontFamily.create({ family: "Arial" }));
this.fontStyles.push(schema.marks.pFontFamily.create({ family: "Georgia" }));
@@ -140,8 +181,9 @@ export class TooltipTextMenu {
this.fontStyles.push(schema.marks.pFontFamily.create({ family: "Tahoma" }));
this.fontStyles.push(schema.marks.pFontFamily.create({ family: "Impact" }));
this.fontStyles.push(schema.marks.pFontFamily.create({ family: "Crimson Text" }));
+ }
- //font sizes
+ initFontSizes() {
this.fontSizes.push(schema.marks.pFontSize.create({ fontSize: 10 }));
this.fontSizes.push(schema.marks.pFontSize.create({ fontSize: 12 }));
this.fontSizes.push(schema.marks.pFontSize.create({ fontSize: 14 }));
@@ -152,8 +194,9 @@ export class TooltipTextMenu {
this.fontSizes.push(schema.marks.pFontSize.create({ fontSize: 32 }));
this.fontSizes.push(schema.marks.pFontSize.create({ fontSize: 48 }));
this.fontSizes.push(schema.marks.pFontSize.create({ fontSize: 72 }));
+ }
- //list types
+ initListTypes() {
this.listTypeToIcon = new Map();
//this.listTypeToIcon.set(schema.nodes.bullet_list, ":");
this.listTypeToIcon.set(schema.nodes.ordered_list.create({ mapStyle: "bullet" }), ":");
@@ -161,21 +204,91 @@ export class TooltipTextMenu {
this.listTypeToIcon.set(schema.nodes.ordered_list.create({ mapStyle: "multi" }), "1.A)");
// this.listTypeToIcon.set(schema.nodes.bullet_list, "⬜");
this.listTypes = Array.from(this.listTypeToIcon.keys());
+ }
- //custom tools
- // this.tooltip.appendChild(this.createLink().render(this.view).dom);
+ // creates dragger element that allows dragging and collapsing (on double click)
+ // of editor and appends it to the wrapper
+ createDragger() {
+ let draggerWrapper = document.createElement("div");
+ draggerWrapper.className = "dragger-wrapper";
- this._brushdom = this.createBrush().render(this.view).dom;
- this.tooltip.appendChild(this._brushdom);
- this.tooltip.appendChild(this.createLink().render(this.view).dom);
- this.tooltip.appendChild(this.createStar().render(this.view).dom);
+ let dragger = document.createElement("div");
+ dragger.className = "dragger";
- this.updateListItemDropdown(":", this.listTypeBtnDom);
+ let line1 = document.createElement("span");
+ line1.className = "dragger-line";
+ let line2 = document.createElement("span");
+ line2.className = "dragger-line";
+ let line3 = document.createElement("span");
+ line3.className = "dragger-line";
- this.updateFromDash(view, undefined, undefined);
- TooltipTextMenu.Toolbar = this.wrapper;
+ dragger.appendChild(line1);
+ dragger.appendChild(line2);
+ dragger.appendChild(line3);
+
+ draggerWrapper.appendChild(dragger);
+
+ this.wrapper.appendChild(draggerWrapper);
+ this.dragElement(draggerWrapper);
+ }
+
+ dragElement(elmnt: HTMLElement) {
+ var pos1 = 0, pos2 = 0, pos3 = 0, pos4 = 0;
+ if (elmnt) {
+ // if present, the header is where you move the DIV from:
+ elmnt.onpointerdown = dragMouseDown;
+ elmnt.ondblclick = onClick;
+ }
+ const self = this;
+
+ function dragMouseDown(e: PointerEvent) {
+ e = e || window.event;
+ //e.preventDefault();
+ // get the mouse cursor position at startup:
+ pos3 = e.clientX;
+ pos4 = e.clientY;
+ document.onpointerup = closeDragElement;
+ // call a function whenever the cursor moves:
+ document.onpointermove = elementDrag;
+ }
+
+ function onClick(e: MouseEvent) {
+ self._collapsed = !self._collapsed;
+ const children = self.wrapper.childNodes;
+ if (self._collapsed && children.length > 0) {
+ self.wrapper.removeChild(self.tooltip);
+ self.basicTools && self.wrapper.prepend(self.basicTools);
+ }
+ else {
+ self.wrapper.prepend(self.tooltip);
+ self.basicTools && self.wrapper.removeChild(self.basicTools);
+ }
+ }
+
+ function elementDrag(e: PointerEvent) {
+ e = e || window.event;
+ //e.preventDefault();
+ // calculate the new cursor position:
+ pos1 = pos3 - e.clientX;
+ pos2 = pos4 - e.clientY;
+ pos3 = e.clientX;
+ pos4 = e.clientY;
+ // set the element's new position:
+ // elmnt.style.top = (elmnt.offsetTop - pos2) + "px";
+ // elmnt.style.left = (elmnt.offsetLeft - pos1) + "px";
+
+ self.wrapper.style.top = (self.wrapper.offsetTop - pos2) + "px";
+ self.wrapper.style.left = (self.wrapper.offsetLeft - pos1) + "px";
+ }
+
+ function closeDragElement() {
+ // stop moving when mouse button is released:
+ document.onpointerup = null;
+ document.onpointermove = null;
+ //self.highlightSearchTerms(self.state, ["hello"]);
+ //FormattedTextBox.Instance.unhighlightSearchTerms();
+ }
}
- public static Toolbar: HTMLDivElement | undefined;
//label of dropdown will change to given label
updateFontSizeDropdown(label: string) {
@@ -187,7 +300,7 @@ export class TooltipTextMenu {
let newfontSizeDom = (new Dropdown(fontSizeBtns, {
label: label,
- css: "color:black; min-width: 60px; padding-left: 5px; margin-right: 0;"
+ css: "color:black; min-width: 60px;"
}) as MenuItem).render(this.view).dom;
if (this.fontSizeDom) { this.tooltip.replaceChild(newfontSizeDom, this.fontSizeDom); }
else {
@@ -206,25 +319,20 @@ export class TooltipTextMenu {
let newfontStyleDom = (new Dropdown(fontBtns, {
label: label,
- css: "color:black; width: 125px; margin-left: -3px; padding-left: 2px;"
+ css: "color:black; width: 125px;"
}) as MenuItem).render(this.view).dom;
if (this.fontStyleDom) { this.tooltip.replaceChild(newfontStyleDom, this.fontStyleDom); }
else {
this.tooltip.appendChild(newfontStyleDom);
}
this.fontStyleDom = newfontStyleDom;
-
}
updateLinkMenu() {
if (!this.linkEditor || !this.linkText) {
this.linkEditor = document.createElement("div");
this.linkEditor.className = "ProseMirror-icon menuicon";
- this.linkEditor.style.color = "black";
this.linkText = document.createElement("div");
- this.linkText.style.cssFloat = "left";
- this.linkText.style.marginRight = "5px";
- this.linkText.style.marginLeft = "5px";
this.linkText.setAttribute("contenteditable", "true");
this.linkText.style.whiteSpace = "nowrap";
this.linkText.style.width = "150px";
@@ -263,9 +371,7 @@ export class TooltipTextMenu {
this.linkDrag.style.width = "15px";
this.linkDrag.style.height = "15px";
this.linkDrag.title = "Drag to create link";
- this.linkDrag.style.color = "black";
- this.linkDrag.style.background = "black";
- this.linkDrag.style.cssFloat = "left";
+ this.linkDrag.id = "link-drag";
this.linkDrag.onpointerdown = (e: PointerEvent) => {
if (!this.editorProps) return;
let dragData = new DragManager.LinkDragData(this.editorProps.Document);
@@ -311,63 +417,124 @@ export class TooltipTextMenu {
e.preventDefault();
}
};
- // this.tooltip.appendChild(this.linkEditor);
}
- dragElement(elmnt: HTMLElement) {
- var pos1 = 0, pos2 = 0, pos3 = 0, pos4 = 0;
- if (elmnt) {
- // if present, the header is where you move the DIV from:
- elmnt.onpointerdown = dragMouseDown;
- elmnt.ondblclick = onClick;
+ async getTextLinkTargetTitle() {
+ let node = this.view.state.selection.$from.nodeAfter;
+ let link = node && node.marks.find(m => m.type.name === "link");
+ if (link) {
+ let href = link.attrs.href;
+ if (href) {
+ if (href.indexOf(Utils.prepend("/doc/")) === 0) {
+ const linkclicked = href.replace(Utils.prepend("/doc/"), "").split("?")[0];
+ if (linkclicked) {
+ let linkDoc = await DocServer.GetRefField(linkclicked);
+ if (linkDoc instanceof Doc) {
+ let anchor1 = await Cast(linkDoc.anchor1, Doc);
+ let anchor2 = await Cast(linkDoc.anchor2, Doc);
+ let currentDoc = SelectionManager.SelectedDocuments().length && SelectionManager.SelectedDocuments()[0].props.Document;
+ if (currentDoc && anchor1 && anchor2) {
+ if (Doc.AreProtosEqual(currentDoc, anchor1)) {
+ return StrCast(anchor2.title);
+ }
+ if (Doc.AreProtosEqual(currentDoc, anchor2)) {
+ return StrCast(anchor1.title);
+ }
+ }
+ }
+ }
+ } else {
+ return href;
+ }
+ } else {
+ return link.attrs.title;
+ }
}
- const self = this;
+ }
- function dragMouseDown(e: PointerEvent) {
- e = e || window.event;
- //e.preventDefault();
- // get the mouse cursor position at startup:
- pos3 = e.clientX;
- pos4 = e.clientY;
- document.onpointerup = closeDragElement;
- // call a function whenever the cursor moves:
- document.onpointermove = elementDrag;
- }
+ async createLinkDropdown() {
+ let targetTitle = await this.getTextLinkTargetTitle();
+ let input = document.createElement("input");
- function onClick(e: MouseEvent) {
- self._collapsed = !self._collapsed;
- const children = self.wrapper.childNodes;
- if (self._collapsed && children.length > 1) {
- self.wrapper.removeChild(self.tooltip);
+ // menu item for input for hyperlink url
+ // TODO: integrate search to allow users to search for a doc to link to
+ let linkInfo = new MenuItem({
+ title: "",
+ execEvent: "",
+ class: "button-setting-disabled",
+ css: "",
+ render() {
+ let p = document.createElement("p");
+ p.textContent = "Linked to:";
+
+ input.type = "text";
+ input.placeholder = "Enter URL";
+ if (targetTitle) input.value = targetTitle;
+ input.onclick = (e: MouseEvent) => {
+ input.select();
+ input.focus();
+ };
+
+ let div = document.createElement("div");
+ div.appendChild(p);
+ div.appendChild(input);
+ return div;
+ },
+ enable() { return false; },
+ run(p1, p2, p3, event) {
+ event.stopPropagation();
}
- else {
- self.wrapper.appendChild(self.tooltip);
+ });
+
+ // menu item to update/apply the hyperlink to the selected text
+ let linkApply = new MenuItem({
+ title: "",
+ execEvent: "",
+ class: "",
+ css: "",
+ render() {
+ let button = document.createElement("button");
+ button.className = "link-url-button";
+ button.textContent = "Apply hyperlink";
+ return button;
+ },
+ enable() { return false; },
+ run: (state, dispatch, view, event) => {
+ event.stopPropagation();
+ this.makeLinkToURL(input.value, "onRight");
}
- }
+ });
- function elementDrag(e: PointerEvent) {
- e = e || window.event;
- //e.preventDefault();
- // calculate the new cursor position:
- pos1 = pos3 - e.clientX;
- pos2 = pos4 - e.clientY;
- pos3 = e.clientX;
- pos4 = e.clientY;
- // set the element's new position:
- // elmnt.style.top = (elmnt.offsetTop - pos2) + "px";
- // elmnt.style.left = (elmnt.offsetLeft - pos1) + "px";
+ // menu item to remove the link
+ // TODO: allow this to be undoable
+ let self = this;
+ let deleteLink = new MenuItem({
+ title: "Delete link",
+ execEvent: "",
+ class: "separated-button",
+ css: "",
+ render() {
+ let button = document.createElement("button");
+ button.textContent = "Remove link";
+
+ let wrapper = document.createElement("div");
+ wrapper.appendChild(button);
+ return wrapper;
+ },
+ enable() { return true; },
+ async run() {
+ self.deleteLink();
+ // update link dropdown
+ let dropdown = await self.createLinkDropdown();
+ let newLinkDropdowndom = dropdown.render(self.view).dom;
+ self._linkDropdownDom && self.tooltip.replaceChild(newLinkDropdowndom, self._linkDropdownDom);
+ self._linkDropdownDom = newLinkDropdowndom;
+ }
+ });
- self.wrapper.style.top = (self.wrapper.offsetTop - pos2) + "px";
- self.wrapper.style.left = (self.wrapper.offsetLeft - pos1) + "px";
- }
- function closeDragElement() {
- // stop moving when mouse button is released:
- document.onpointerup = null;
- document.onpointermove = null;
- //self.highlightSearchTerms(self.state, ["hello"]);
- //FormattedTextBox.Instance.unhighlightSearchTerms();
- }
+ let linkDropdown = new Dropdown(targetTitle ? [linkInfo, linkApply, deleteLink] : [linkInfo, linkApply], { class: "buttonSettings-dropdown" }) as MenuItem;
+ return linkDropdown;
}
// makeLinkWithState = (state: EditorState, target: string, location: string) => {
@@ -385,6 +552,15 @@ export class TooltipTextMenu {
return "";
}
+ makeLinkToURL = (target: String, lcoation: string) => {
+ let node = this.view.state.selection.$from.nodeAfter;
+ let link = this.view.state.schema.mark(this.view.state.schema.marks.link, { href: target, location: location });
+ this.view.dispatch(this.view.state.tr.removeMark(this.view.state.selection.from, this.view.state.selection.to, this.view.state.schema.marks.link));
+ this.view.dispatch(this.view.state.tr.addMark(this.view.state.selection.from, this.view.state.selection.to, link));
+ node = this.view.state.selection.$from.nodeAfter;
+ link = node && node.marks.find(m => m.type.name === "link");
+ }
+
deleteLink = () => {
let node = this.view.state.selection.$from.nodeAfter;
let link = node && node.marks.find(m => m.type === this.view.state.schema.marks.link);
@@ -402,19 +578,69 @@ export class TooltipTextMenu {
}
}
}
+ }
-
+ deleteLinkItem() {
+ const icon = {
+ height: 16, width: 16,
+ path: "M15.898,4.045c-0.271-0.272-0.713-0.272-0.986,0l-4.71,4.711L5.493,4.045c-0.272-0.272-0.714-0.272-0.986,0s-0.272,0.714,0,0.986l4.709,4.711l-4.71,4.711c-0.272,0.271-0.272,0.713,0,0.986c0.136,0.136,0.314,0.203,0.492,0.203c0.179,0,0.357-0.067,0.493-0.203l4.711-4.711l4.71,4.711c0.137,0.136,0.314,0.203,0.494,0.203c0.178,0,0.355-0.067,0.492-0.203c0.273-0.273,0.273-0.715,0-0.986l-4.711-4.711l4.711-4.711C16.172,4.759,16.172,4.317,15.898,4.045z"
+ };
+ return new MenuItem({
+ title: "Delete Link",
+ label: "X",
+ icon: icon,
+ css: "color: red",
+ class: "summarize",
+ execEvent: "",
+ run: (state, dispatch) => {
+ this.deleteLink();
+ }
+ });
}
- public static insertStar(state: EditorState<any>, dispatch: any) {
- if (state.selection.empty) return false;
- let mark = state.schema.marks.highlight.create();
- let tr = state.tr;
- tr.addMark(state.selection.from, state.selection.to, mark);
- let content = tr.selection.content();
- let newNode = state.schema.nodes.star.create({ visibility: false, text: content, textslice: content.toJSON() });
- dispatch && dispatch(tr.replaceSelectionWith(newNode).removeMark(tr.selection.from - 1, tr.selection.from, mark));
- return true;
+ createLink() {
+ let markType = schema.marks.link;
+ return new MenuItem({
+ title: "Add or remove link",
+ label: "Add or remove link",
+ execEvent: "",
+ icon: icons.link,
+ css: "color:white;",
+ class: "menuicon",
+ enable(state) { return !state.selection.empty; },
+ run: (state, dispatch, view) => {
+ // to remove link
+ let curLink = "";
+ if (this.markActive(state, markType)) {
+
+ let { from, $from, to, empty } = state.selection;
+ let node = state.doc.nodeAt(from);
+ node && node.marks.map(m => {
+ m.type === markType && (curLink = m.attrs.href);
+ });
+ //toggleMark(markType)(state, dispatch);
+ //return true;
+ }
+ // to create link
+ openPrompt({
+ title: "Create a link",
+ fields: {
+ href: new TextField({
+ value: curLink,
+ label: "Link Target",
+ required: true
+ }),
+ title: new TextField({ label: "Title" })
+ },
+ callback(attrs: any) {
+ toggleMark(markType, attrs)(view.state, view.dispatch);
+ view.focus();
+ },
+ flyout_top: 0,
+ flyout_left: 0
+ });
+ }
+ });
}
//will display a remove-list-type button if selection is in list, otherwise will show list type dropdown
@@ -439,6 +665,369 @@ export class TooltipTextMenu {
this.tooltip.appendChild(listTypeBtn);
return listTypeBtn;
}
+
+ createStar() {
+ return new MenuItem({
+ title: "Summarize",
+ label: "Summarize",
+ icon: icons.join,
+ css: "color:white;",
+ class: "menuicon",
+ execEvent: "",
+ run: (state, dispatch) => {
+ TooltipTextMenu.insertStar(this.view.state, this.view.dispatch);
+ }
+
+ });
+ }
+
+ public static insertStar(state: EditorState<any>, dispatch: any) {
+ if (state.selection.empty) return false;
+ let mark = state.schema.marks.highlight.create();
+ let tr = state.tr;
+ tr.addMark(state.selection.from, state.selection.to, mark);
+ let content = tr.selection.content();
+ let newNode = state.schema.nodes.star.create({ visibility: false, text: content, textslice: content.toJSON() });
+ dispatch && dispatch(tr.replaceSelectionWith(newNode).removeMark(tr.selection.from - 1, tr.selection.from, mark));
+ return true;
+ }
+
+ public static insertComment(state: EditorState<any>, dispatch: any) {
+ if (state.selection.empty) return false;
+ let mark = state.schema.marks.highlight.create();
+ let tr = state.tr;
+ tr.addMark(state.selection.from, state.selection.to, mark);
+ let content = tr.selection.content();
+ let newNode = state.schema.nodes.star.create({ visibility: false, text: content, textslice: content.toJSON() });
+ dispatch && dispatch(tr.replaceSelectionWith(newNode).removeMark(tr.selection.from - 1, tr.selection.from, mark));
+ return true;
+ }
+
+ createHighlightTool() {
+ return new MenuItem({
+ title: "Highlight",
+ css: "color:white;",
+ class: "menuicon",
+ execEvent: "",
+ render() {
+ let svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
+ svg.setAttribute("viewBox", "-100 -100 650 650");
+ let path = document.createElementNS('http://www.w3.org/2000/svg', "path");
+ path.setAttributeNS(null, "d", "M0 479.98L99.92 512l35.45-35.45-67.04-67.04L0 479.98zm124.61-240.01a36.592 36.592 0 0 0-10.79 38.1l13.05 42.83-50.93 50.94 96.23 96.23 50.86-50.86 42.74 13.08c13.73 4.2 28.65-.01 38.15-10.78l35.55-41.64-173.34-173.34-41.52 35.44zm403.31-160.7l-63.2-63.2c-20.49-20.49-53.38-21.52-75.12-2.35L190.55 183.68l169.77 169.78L530.27 154.4c19.18-21.74 18.15-54.63-2.35-75.13z");
+ svg.appendChild(path);
+
+ let color = document.createElement("div");
+ color.className = "buttonColor";
+ color.style.backgroundColor = TooltipTextMenuManager.Instance.highlight.toString();
+
+ let wrapper = document.createElement("div");
+ wrapper.id = "colorPicker";
+ wrapper.appendChild(svg);
+ wrapper.appendChild(color);
+ return wrapper;
+ },
+ run: (state, dispatch) => {
+ TooltipTextMenu.insertHighlight(TooltipTextMenuManager.Instance.highlight, this.view.state, this.view.dispatch);
+ }
+ });
+ }
+
+ public static insertHighlight(color: String, state: EditorState<any>, dispatch: any) {
+ if (state.selection.empty) return false;
+
+ let highlightMark = state.schema.mark(state.schema.marks.marker, { highlight: color });
+ dispatch(state.tr.addMark(state.selection.from, state.selection.to, highlightMark));
+ }
+
+ createHighlightDropdown() {
+ // menu item for color picker
+ let self = this;
+ let colors = new MenuItem({
+ title: "",
+ execEvent: "",
+ class: "button-setting-disabled",
+ css: "",
+ render() {
+ let p = document.createElement("p");
+ p.textContent = "Change highlight:";
+
+ let colorsWrapper = document.createElement("div");
+ colorsWrapper.className = "colorPicker-wrapper";
+
+ let colors = [
+ PastelSchemaPalette.get("pink2"),
+ PastelSchemaPalette.get("purple4"),
+ PastelSchemaPalette.get("bluegreen1"),
+ PastelSchemaPalette.get("yellow4"),
+ PastelSchemaPalette.get("red2"),
+ PastelSchemaPalette.get("bluegreen7"),
+ PastelSchemaPalette.get("bluegreen5"),
+ PastelSchemaPalette.get("orange1"),
+ "white",
+ "transparent"
+ ];
+
+ colors.forEach(color => {
+ let button = document.createElement("button");
+ button.className = color === TooltipTextMenuManager.Instance.highlight ? "colorPicker active" : "colorPicker";
+ if (color) {
+ button.style.backgroundColor = color;
+ button.textContent = color === "transparent" ? "X" : "";
+ button.onclick = e => {
+ TooltipTextMenuManager.Instance.highlight = color;
+
+ TooltipTextMenu.insertHighlight(TooltipTextMenuManager.Instance.highlight, self.view.state, self.view.dispatch);
+
+ // update color menu
+ let highlightDom = self.createHighlightTool().render(self.view).dom;
+ let highlightDropdownDom = self.createHighlightDropdown().render(self.view).dom;
+ self.highlightDom && self.tooltip.replaceChild(highlightDom, self.highlightDom);
+ self.highlightDropdownDom && self.tooltip.replaceChild(highlightDropdownDom, self.highlightDropdownDom);
+ self.highlightDom = highlightDom;
+ self.highlightDropdownDom = highlightDropdownDom;
+ };
+ }
+ colorsWrapper.appendChild(button);
+ });
+
+ let div = document.createElement("div");
+ div.appendChild(p);
+ div.appendChild(colorsWrapper);
+ return div;
+ },
+ enable() { return false; },
+ run(p1, p2, p3, event) {
+ event.stopPropagation();
+ }
+ });
+
+ let colorDropdown = new Dropdown([colors], { class: "buttonSettings-dropdown" }) as MenuItem;
+ return colorDropdown;
+ }
+
+ createColorTool() {
+ return new MenuItem({
+ title: "Color",
+ css: "color:white;",
+ class: "menuicon",
+ execEvent: "",
+ render() {
+ let svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
+ svg.setAttribute("viewBox", "-100 -100 650 650");
+ let path = document.createElementNS('http://www.w3.org/2000/svg', "path");
+ path.setAttributeNS(null, "d", "M204.3 5C104.9 24.4 24.8 104.3 5.2 203.4c-37 187 131.7 326.4 258.8 306.7 41.2-6.4 61.4-54.6 42.5-91.7-23.1-45.4 9.9-98.4 60.9-98.4h79.7c35.8 0 64.8-29.6 64.9-65.3C511.5 97.1 368.1-26.9 204.3 5zM96 320c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm32-128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128-64c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 64c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z");
+ svg.appendChild(path);
+
+ let color = document.createElement("div");
+ color.className = "buttonColor";
+ color.style.backgroundColor = TooltipTextMenuManager.Instance.color.toString();
+
+ let wrapper = document.createElement("div");
+ wrapper.id = "colorPicker";
+ wrapper.appendChild(svg);
+ wrapper.appendChild(color);
+ return wrapper;
+ },
+ run: (state, dispatch) => {
+ TooltipTextMenu.insertColor(TooltipTextMenuManager.Instance.color, this.view.state, this.view.dispatch);
+ }
+ });
+ }
+
+ public static insertColor(color: String, state: EditorState<any>, dispatch: any) {
+ if (state.selection.empty) return false;
+
+ let colorMark = state.schema.mark(state.schema.marks.color, { color: color });
+ dispatch(state.tr.addMark(state.selection.from, state.selection.to, colorMark));
+ }
+
+ createColorDropdown() {
+ // menu item for color picker
+ let self = this;
+ let colors = new MenuItem({
+ title: "",
+ execEvent: "",
+ class: "button-setting-disabled",
+ css: "",
+ render() {
+ let p = document.createElement("p");
+ p.textContent = "Change color:";
+
+ let colorsWrapper = document.createElement("div");
+ colorsWrapper.className = "colorPicker-wrapper";
+
+ let colors = [
+ DarkPastelSchemaPalette.get("pink2"),
+ DarkPastelSchemaPalette.get("purple4"),
+ DarkPastelSchemaPalette.get("bluegreen1"),
+ DarkPastelSchemaPalette.get("yellow4"),
+ DarkPastelSchemaPalette.get("red2"),
+ DarkPastelSchemaPalette.get("bluegreen7"),
+ DarkPastelSchemaPalette.get("bluegreen5"),
+ DarkPastelSchemaPalette.get("orange1"),
+ "#757472",
+ "#000"
+ ];
+
+ colors.forEach(color => {
+ let button = document.createElement("button");
+ button.className = color === TooltipTextMenuManager.Instance.color ? "colorPicker active" : "colorPicker";
+ if (color) {
+ button.style.backgroundColor = color;
+ button.onclick = e => {
+ TooltipTextMenuManager.Instance.color = color;
+
+ TooltipTextMenu.insertColor(TooltipTextMenuManager.Instance.color, self.view.state, self.view.dispatch);
+
+ // update color menu
+ let colorDom = self.createColorTool().render(self.view).dom;
+ let colorDropdownDom = self.createColorDropdown().render(self.view).dom;
+ self.colorDom && self.tooltip.replaceChild(colorDom, self.colorDom);
+ self.colorDropdownDom && self.tooltip.replaceChild(colorDropdownDom, self.colorDropdownDom);
+ self.colorDom = colorDom;
+ self.colorDropdownDom = colorDropdownDom;
+ };
+ }
+ colorsWrapper.appendChild(button);
+ });
+
+ let div = document.createElement("div");
+ div.appendChild(p);
+ div.appendChild(colorsWrapper);
+ return div;
+ },
+ enable() { return false; },
+ run(p1, p2, p3, event) {
+ event.stopPropagation();
+ }
+ });
+
+ let colorDropdown = new Dropdown([colors], { class: "buttonSettings-dropdown" }) as MenuItem;
+ return colorDropdown;
+ }
+
+ createBrush(active: boolean = false) {
+ const icon = {
+ height: 32, width: 32,
+ path: "M30.828 1.172c-1.562-1.562-4.095-1.562-5.657 0l-5.379 5.379-3.793-3.793-4.243 4.243 3.326 3.326-14.754 14.754c-0.252 0.252-0.358 0.592-0.322 0.921h-0.008v5c0 0.552 0.448 1 1 1h5c0 0 0.083 0 0.125 0 0.288 0 0.576-0.11 0.795-0.329l14.754-14.754 3.326 3.326 4.243-4.243-3.793-3.793 5.379-5.379c1.562-1.562 1.562-4.095 0-5.657zM5.409 30h-3.409v-3.409l14.674-14.674 3.409 3.409-14.674 14.674z"
+ };
+ let self = this;
+ return new MenuItem({
+ title: "Brush tool",
+ label: "Brush tool",
+ icon: icon,
+ css: "color:white;",
+ class: active ? "menuicon-active" : "menuicon",
+ execEvent: "",
+ run: (state, dispatch) => {
+ this.brush_function(state, dispatch);
+
+ // update dropdown with marks
+ let newBrushDropdowndom = self.createBrushDropdown().render(self.view).dom;
+ self._brushDropdownDom && self.tooltip.replaceChild(newBrushDropdowndom, self._brushDropdownDom);
+ self._brushDropdownDom = newBrushDropdowndom;
+ },
+ active: (state) => {
+ return true;
+ }
+ });
+ }
+
+ brush_function(state: EditorState<any>, dispatch: any) {
+ if (TooltipTextMenuManager.Instance._brushIsEmpty) {
+ const selected_marks = this.getMarksInSelection(this.view.state);
+ if (this._brushdom) {
+ if (selected_marks.size >= 0) {
+ TooltipTextMenuManager.Instance._brushMarks = selected_marks;
+ const newbrush = this.createBrush(true).render(this.view).dom;
+ this.tooltip.replaceChild(newbrush, this._brushdom);
+ this._brushdom = newbrush;
+ TooltipTextMenuManager.Instance._brushIsEmpty = !TooltipTextMenuManager.Instance._brushIsEmpty;
+ }
+ }
+ }
+ else {
+ let { from, to, $from } = this.view.state.selection;
+ if (this._brushdom) {
+ if (!this.view.state.selection.empty && $from && $from.nodeAfter) {
+ if (TooltipTextMenuManager.Instance._brushMarks && to - from > 0) {
+ this.view.dispatch(this.view.state.tr.removeMark(from, to));
+ Array.from(TooltipTextMenuManager.Instance._brushMarks).filter(m => m.type !== schema.marks.user_mark).forEach((mark: Mark) => {
+ const markType = mark.type;
+ this.changeToMarkInGroup(markType, this.view, []);
+ });
+ }
+ }
+ else {
+ const newbrush = this.createBrush(false).render(this.view).dom;
+ this.tooltip.replaceChild(newbrush, this._brushdom);
+ this._brushdom = newbrush;
+ TooltipTextMenuManager.Instance._brushIsEmpty = !TooltipTextMenuManager.Instance._brushIsEmpty;
+ }
+ }
+ }
+ }
+
+ createBrushDropdown(active: boolean = false) {
+ let label = "Stored marks: ";
+ if (TooltipTextMenuManager.Instance._brushMarks && TooltipTextMenuManager.Instance._brushMarks.size > 0) {
+ TooltipTextMenuManager.Instance._brushMarks.forEach((mark: Mark) => {
+ const markType = mark.type;
+ label += markType.name;
+ label += ", ";
+ });
+ label = label.substring(0, label.length - 2);
+ } else {
+ label = "No marks are currently stored";
+ }
+
+
+ let brushInfo = new MenuItem({
+ title: "",
+ label: label,
+ execEvent: "",
+ class: "button-setting-disabled",
+ css: "",
+ enable() { return false; },
+ run(p1, p2, p3, event) {
+ event.stopPropagation();
+ }
+ });
+
+ let self = this;
+ let clearBrush = new MenuItem({
+ title: "Clear brush",
+ execEvent: "",
+ class: "separated-button",
+ css: "",
+ render() {
+ let button = document.createElement("button");
+ button.textContent = "Clear brush";
+
+ let wrapper = document.createElement("div");
+ wrapper.appendChild(button);
+ return wrapper;
+ },
+ enable() { return true; },
+ run() {
+ TooltipTextMenuManager.Instance._brushIsEmpty = true;
+ TooltipTextMenuManager.Instance._brushMarks = new Set();
+
+ // update brush tool
+ // TODO: this probably isn't very clean
+ let newBrushdom = self.createBrush().render(self.view).dom;
+ self._brushdom && self.tooltip.replaceChild(newBrushdom, self._brushdom);
+ self._brushdom = newBrushdom;
+ let newBrushDropdowndom = self.createBrushDropdown().render(self.view).dom;
+ self._brushDropdownDom && self.tooltip.replaceChild(newBrushDropdowndom, self._brushDropdownDom);
+ self._brushDropdownDom = newBrushDropdowndom;
+ }
+ });
+
+ let hasMarks = TooltipTextMenuManager.Instance._brushMarks && TooltipTextMenuManager.Instance._brushMarks.size > 0;
+ let brushDom = new Dropdown(hasMarks ? [brushInfo, clearBrush] : [brushInfo], { class: "buttonSettings-dropdown" }) as MenuItem;
+ return brushDom;
+ }
//for a specific grouping of marks (passed in), remove all and apply the passed-in one to the selected textchangeToMarkInGroup = (markType: MarkType | undefined, view: EditorView, fontMarks: MarkType[]) => {
changeToMarkInGroup = (markType: MarkType | undefined, view: EditorView, fontMarks: MarkType[]) => {
let { $cursor, ranges } = view.state.selection as TextSelection;
@@ -594,7 +1183,7 @@ export class TooltipTextMenu {
title: "",
label: label,
execEvent: "",
- class: "menuicon",
+ class: "dropdown-item",
css: css,
enable() { return true; },
run() {
@@ -609,7 +1198,7 @@ export class TooltipTextMenu {
title: "",
label: label,
execEvent: "",
- class: "menuicon",
+ class: "dropdown-item",
css: css,
enable() { return true; },
run() {
@@ -618,187 +1207,6 @@ export class TooltipTextMenu {
});
}
- createStar() {
- return new MenuItem({
- title: "Summarize",
- label: "Summarize",
- icon: icons.join,
- css: "color:white;",
- class: "summarize",
- execEvent: "",
- run: (state, dispatch) => {
- TooltipTextMenu.insertStar(this.view.state, this.view.dispatch);
- }
-
- });
- }
-
- deleteLinkItem() {
- const icon = {
- height: 16, width: 16,
- path: "M15.898,4.045c-0.271-0.272-0.713-0.272-0.986,0l-4.71,4.711L5.493,4.045c-0.272-0.272-0.714-0.272-0.986,0s-0.272,0.714,0,0.986l4.709,4.711l-4.71,4.711c-0.272,0.271-0.272,0.713,0,0.986c0.136,0.136,0.314,0.203,0.492,0.203c0.179,0,0.357-0.067,0.493-0.203l4.711-4.711l4.71,4.711c0.137,0.136,0.314,0.203,0.494,0.203c0.178,0,0.355-0.067,0.492-0.203c0.273-0.273,0.273-0.715,0-0.986l-4.711-4.711l4.711-4.711C16.172,4.759,16.172,4.317,15.898,4.045z"
- };
- return new MenuItem({
- title: "Delete Link",
- label: "X",
- icon: icon,
- css: "color: red",
- class: "summarize",
- execEvent: "",
- run: (state, dispatch) => {
- this.deleteLink();
- }
- });
- }
-
- createBrush(active: boolean = false) {
- const icon = {
- height: 32, width: 32,
- path: "M30.828 1.172c-1.562-1.562-4.095-1.562-5.657 0l-5.379 5.379-3.793-3.793-4.243 4.243 3.326 3.326-14.754 14.754c-0.252 0.252-0.358 0.592-0.322 0.921h-0.008v5c0 0.552 0.448 1 1 1h5c0 0 0.083 0 0.125 0 0.288 0 0.576-0.11 0.795-0.329l14.754-14.754 3.326 3.326 4.243-4.243-3.793-3.793 5.379-5.379c1.562-1.562 1.562-4.095 0-5.657zM5.409 30h-3.409v-3.409l14.674-14.674 3.409 3.409-14.674 14.674z"
- };
- return new MenuItem({
- title: "Brush tool",
- label: "Brush tool",
- icon: icon,
- css: "color:white;",
- class: active ? "brush-active" : "brush",
- execEvent: "",
- run: (state, dispatch) => {
- this.brush_function(state, dispatch);
- },
- active: (state) => {
- return true;
- }
- });
- }
-
- // selectionchanged event handler
-
- brush_function(state: EditorState<any>, dispatch: any) {
- if (this._brushIsEmpty) {
- const selected_marks = this.getMarksInSelection(this.view.state);
- if (this._brushdom) {
- if (selected_marks.size >= 0) {
- this._brushMarks = selected_marks;
- const newbrush = this.createBrush(true).render(this.view).dom;
- this.tooltip.replaceChild(newbrush, this._brushdom);
- this._brushdom = newbrush;
- this._brushIsEmpty = !this._brushIsEmpty;
- }
- }
- }
- else {
- let { from, to, $from } = this.view.state.selection;
- if (this._brushdom) {
- if (!this.view.state.selection.empty && $from && $from.nodeAfter) {
- if (this._brushMarks && to - from > 0) {
- this.view.dispatch(this.view.state.tr.removeMark(from, to));
- Array.from(this._brushMarks).filter(m => m.type !== schema.marks.user_mark).forEach((mark: Mark) => {
- const markType = mark.type;
- if (mark.type === schema.marks.pFontFamily) this.changeToFontFamily(mark, this.view);
- else if (mark.type === schema.marks.pFontSize) this.changeToFontSize(mark, this.view);
- else this.changeToMarkInGroup(markType, this.view, []);
- });
- }
- }
- else {
- const newbrush = this.createBrush(false).render(this.view).dom;
- this.tooltip.replaceChild(newbrush, this._brushdom);
- this._brushdom = newbrush;
- this._brushIsEmpty = !this._brushIsEmpty;
- }
- }
- }
-
-
- }
-
- createCollapse() {
- this._collapseBtn = new MenuItem({
- title: "Collapse",
- //label: "Collapse",
- icon: icons.join,
- execEvent: "",
- css: "color:white;",
- class: "summarize",
- run: () => {
- this.collapseToolTip();
- }
- });
- }
-
- collapseToolTip() {
- if (this._collapseBtn) {
- if (this._collapseBtn.spec.title === "Collapse") {
- // const newcollapseBtn = new MenuItem({
- // title: "Expand",
- // icon: icons.join,
- // execEvent: "",
- // css: "color:white;",
- // class: "summarize",
- // run: (state, dispatch, view) => {
- // this.collapseToolTip();
- // }
- // });
- // this.tooltip.replaceChild(newcollapseBtn.render(this.view).dom, this._collapseBtn.render(this.view).dom);
- // this._collapseBtn = newcollapseBtn;
- this.tooltip.style.width = "30px";
- this._collapseBtn.spec.title = "Expand";
- this._collapseBtn.render(this.view);
- }
- else {
- this._collapseBtn.spec.title = "Collapse";
- this.tooltip.style.width = "550px";
- this._collapseBtn.render(this.view);
- }
- }
- }
-
- createLink() {
- let markType = schema.marks.link;
- return new MenuItem({
- title: "Add or remove link",
- label: "Add or remove link",
- execEvent: "",
- icon: icons.link,
- css: "color:white;",
- class: "menuicon",
- enable(state) { return !state.selection.empty; },
- run: (state, dispatch, view) => {
- // to remove link
- let curLink = "";
- if (this.markActive(state, markType)) {
-
- let { from, $from, to, empty } = state.selection;
- let node = state.doc.nodeAt(from);
- node && node.marks.map(m => {
- m.type === markType && (curLink = m.attrs.href);
- });
- //toggleMark(markType)(state, dispatch);
- //return true;
- }
- // to create link
- openPrompt({
- title: "Create a link",
- fields: {
- href: new TextField({
- value: curLink,
- label: "Link Target",
- required: true
- }),
- title: new TextField({ label: "Title" })
- },
- callback(attrs: any) {
- toggleMark(markType, attrs)(view.state, view.dispatch);
- view.focus();
- },
- flyout_top: 0,
- flyout_left: 0
- });
- }
- });
- }
-
//makes a button for the drop down FOR NODE TYPES
//css is the style you want applied to the button
dropdownNodeBtn(label: string, css: string, nodeType: NodeType | undefined, view: EditorView, groupNodes: NodeType[], changeToNodeInGroup: (nodeType: NodeType<any> | undefined, view: EditorView, groupNodes: NodeType[]) => any) {
@@ -806,7 +1214,7 @@ export class TooltipTextMenu {
title: "",
label: label,
execEvent: "",
- class: "menuicon",
+ class: "dropdown-item",
css: css,
enable() { return true; },
run() {
@@ -815,7 +1223,7 @@ export class TooltipTextMenu {
});
}
- markActive = function (state: EditorState<any>, type: MarkType<Schema<string, string>>) {
+ markActive = function(state: EditorState<any>, type: MarkType<Schema<string, string>>) {
let { from, $from, to, empty } = state.selection;
if (empty) return type.isInSet(state.storedMarks || $from.marks());
else return state.doc.rangeHasMark(from, to, type);
@@ -831,6 +1239,21 @@ export class TooltipTextMenu {
return span;
}
+ svgIcon(name: string, title: string = name, dpath: string) {
+ let svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
+ svg.setAttribute("viewBox", "-100 -100 650 650");
+ let path = document.createElementNS('http://www.w3.org/2000/svg', "path");
+ path.setAttributeNS(null, "d", dpath);
+ svg.appendChild(path);
+
+ let span = document.createElement("span");
+ span.className = name + " menuicon";
+ span.title = title;
+ span.appendChild(svg);
+
+ return span;
+ }
+
//method for checking whether node can be inserted
canInsert(state: EditorState, nodeType: NodeType<Schema<string, string>>) {
let $from = state.selection.$from;
@@ -893,7 +1316,7 @@ export class TooltipTextMenu {
update(view: EditorView, lastState: EditorState | undefined) { this.updateFromDash(view, lastState, this.editorProps); }
//updates the tooltip menu when the selection changes
- public updateFromDash(view: EditorView, lastState: EditorState | undefined, props: any) {
+ public async updateFromDash(view: EditorView, lastState: EditorState | undefined, props: any) {
if (!view) {
console.log("no editor? why?");
return;
@@ -913,12 +1336,18 @@ export class TooltipTextMenu {
//this.tooltip.style.display = "none";
//return;
}
- //UPDATE LIST ITEM DROPDOWN
+
+ // update link dropdown
+ let linkDropdown = await this.createLinkDropdown();
+ let newLinkDropdowndom = linkDropdown.render(this.view).dom;
+ this._linkDropdownDom && this.tooltip.replaceChild(newLinkDropdowndom, this._linkDropdownDom);
+ this._linkDropdownDom = newLinkDropdowndom;
//UPDATE FONT STYLE DROPDOWN
let activeStyles = this.activeFontFamilyOnSelection();
if (activeStyles !== undefined) {
if (activeStyles.length === 1) {
+ console.log("updating font style dropdown", activeStyles[0]);
activeStyles[0] && this.updateFontStyleDropdown(activeStyles[0]);
} else this.updateFontStyleDropdown(activeStyles.length ? "various" : "default");
}
@@ -935,33 +1364,19 @@ export class TooltipTextMenu {
}
update_mark_doms() {
this.reset_mark_doms();
- let foundlink = false;
- let children = this.extras.childNodes;
this._activeMarks.forEach((mark) => {
if (this._marksToDoms.has(mark)) {
let dom = this._marksToDoms.get(mark);
if (dom) dom.style.color = "greenyellow";
}
- if (children.length > 1) {
- foundlink = true;
- }
- if (mark.type.name === "link" && children.length === 1) {
- // let del = document.createElement("button");
- // del.textContent = "X";
- // del.style.color = "red";
- // del.style.height = "10px";
- // del.style.width = "10px";
- // del.style.marginLeft = "5px";
- // del.onclick = this.deleteLink;
- // this.extras.appendChild(del);
- let del = this.deleteLinkItem().render(this.view).dom;
- this.extras.appendChild(del);
- foundlink = true;
- }
});
- if (!foundlink) {
- if (children.length > 1) {
- this.extras.removeChild(children[1]);
+
+ // keeps brush tool highlighted if active when switching between textboxes
+ if (!TooltipTextMenuManager.Instance._brushIsEmpty) {
+ if (this._brushdom) {
+ const newbrush = this.createBrush(true).render(this.view).dom;
+ this.tooltip.replaceChild(newbrush, this._brushdom);
+ this._brushdom = newbrush;
}
}
@@ -1000,12 +1415,10 @@ export class TooltipTextMenu {
let activeMarks: MarkType[];
if (!empty) {
activeMarks = markGroup.filter(mark => {
- if (dispatch) {
- let has = false;
- for (let i = 0; !has && i < ranges.length; i++) {
- let { $from, $to } = ranges[i];
- return state.doc.rangeHasMark($from.pos, $to.pos, mark);
- }
+ let has = false;
+ for (let i = 0; !has && i < ranges.length; i++) {
+ let { $from, $to } = ranges[i];
+ return state.doc.rangeHasMark($from.pos, $to.pos, mark);
}
return false;
});
@@ -1024,13 +1437,11 @@ export class TooltipTextMenu {
}
this._activeMarks = ref_node.marks;
activeMarks = markGroup.filter(mark_type => {
- if (dispatch) {
- if (mark_type === state.schema.marks.pFontSize) {
- return ref_node.marks.some(m => m.type.name === state.schema.marks.pFontSize.name);
- }
- let mark = state.schema.mark(mark_type);
- return ref_node.marks.includes(mark);
+ if (mark_type === state.schema.marks.pFontSize) {
+ return ref_node.marks.some(m => m.type.name === state.schema.marks.pFontSize.name);
}
+ let mark = state.schema.mark(mark_type);
+ return ref_node.marks.includes(mark);
return false;
});
}
@@ -1069,6 +1480,40 @@ export class TooltipTextMenu {
}
destroy() {
- this.wrapper.remove();
+ // this.wrapper.remove();
+ }
+}
+
+
+class TooltipTextMenuManager {
+ private static _instance: TooltipTextMenuManager;
+
+ public pinnedX: number = 0;
+ public pinnedY: number = 0;
+ public unpinnedX: number = 0;
+ public unpinnedY: number = 0;
+ private _isPinned: boolean = false;
+
+ public _brushMarks: Set<Mark> | undefined;
+ public _brushIsEmpty: boolean = true;
+
+ public color: String = "#000";
+ public highlight: String = "transparent";
+
+ public activeMenu: TooltipTextMenu | undefined;
+
+ static get Instance() {
+ if (!TooltipTextMenuManager._instance) {
+ TooltipTextMenuManager._instance = new TooltipTextMenuManager();
+ }
+ return TooltipTextMenuManager._instance;
+ }
+
+ public get isPinned() {
+ return this._isPinned;
+ }
+
+ public toggleIsPinned() {
+ this._isPinned = !this._isPinned;
}
}
diff --git a/src/client/views/DocComponent.tsx b/src/client/views/DocComponent.tsx
index ae4b7cf3a..92c947fe6 100644
--- a/src/client/views/DocComponent.tsx
+++ b/src/client/views/DocComponent.tsx
@@ -34,7 +34,7 @@ export function DocExtendableComponent<P extends DocExtendableProps, T>(schemaCt
//TODO This might be pretty inefficient if doc isn't observed, because computed doesn't cache then
@computed get Document(): T { return schemaCtor(this.props.Document); }
@computed get layoutDoc() { return Doc.Layout(this.props.Document); }
- @computed get dataDoc() { return (this.props.DataDoc && this.props.Document.isTemplateField ? this.props.DataDoc : Doc.GetProto(this.props.Document)) as Doc; }
+ @computed get dataDoc() { return (this.props.DataDoc && (this.props.Document.isTemplateField || this.props.Document.isTemplateDoc) ? this.props.DataDoc : Doc.GetProto(this.props.Document)) as Doc; }
@computed get extensionDoc() { return Doc.fieldExtensionDoc(this.dataDoc, this.props.fieldKey); }
active = () => !this.props.Document.isBackground && (this.props.Document.forceActive || this.props.isSelected() || this.props.renderDepth === 0);// && !InkingControl.Instance.selectedTool; // bcz: inking state shouldn't affect static tools
}
diff --git a/src/client/views/DocumentButtonBar.tsx b/src/client/views/DocumentButtonBar.tsx
index ba87ecfb4..1412316f9 100644
--- a/src/client/views/DocumentButtonBar.tsx
+++ b/src/client/views/DocumentButtonBar.tsx
@@ -5,7 +5,7 @@ import { action, observable, runInAction } from "mobx";
import { observer } from "mobx-react";
import { Doc } from "../../new_fields/Doc";
import { RichTextField } from '../../new_fields/RichTextField';
-import { NumCast } from "../../new_fields/Types";
+import { NumCast, StrCast } from "../../new_fields/Types";
import { emptyFunction } from "../../Utils";
import { Pulls, Pushes } from '../apis/google_docs/GoogleApiClientUtils';
import { DragLinksAsDocuments, DragManager } from "../util/DragManager";
@@ -135,13 +135,27 @@ export class DocumentButtonBar extends React.Component<{ views: DocumentView[],
if (this._linkerButton.current !== null) {
document.removeEventListener("pointermove", this.onLinkerButtonMoved);
document.removeEventListener("pointerup", this.onLinkerButtonUp);
- let selDoc = this.props.views[0];
- let container = selDoc.props.ContainingCollectionDoc ? selDoc.props.ContainingCollectionDoc.proto : undefined;
- let dragData = new DragManager.LinkDragData(selDoc.props.Document, container ? [container] : []);
- let _linkDrag = UndoManager.StartBatch("Drag Link");
+ let docView = this.props.views[0];
+ let container = docView.props.ContainingCollectionDoc ? docView.props.ContainingCollectionDoc.proto : undefined;
+ let dragData = new DragManager.LinkDragData(docView.props.Document, container ? [container] : []);
+ let linkDrag = UndoManager.StartBatch("Drag Link");
DragManager.StartLinkDrag(this._linkerButton.current, dragData, e.pageX, e.pageY, {
handlers: {
- dragComplete: () => _linkDrag && _linkDrag.end()
+ dragComplete: () => {
+ let tooltipmenu = FormattedTextBox.ToolTipTextMenu;
+ let linkDoc = dragData.linkDocument;
+ if (linkDoc && tooltipmenu) {
+ let proto = Doc.GetProto(linkDoc);
+ if (proto && docView) {
+ proto.sourceContext = docView.props.ContainingCollectionDoc;
+ }
+ let text = tooltipmenu.makeLink(linkDoc, StrCast(linkDoc.anchor2.title), e.ctrlKey ? "onRight" : "inTab");
+ if (linkDoc instanceof Doc && linkDoc.anchor2 instanceof Doc) {
+ proto.title = text === "" ? proto.title : text + " to " + linkDoc.anchor2.title; // TODODO open to more descriptive descriptions of following in text link
+ }
+ }
+ linkDrag && linkDrag.end();
+ }
},
hideSource: false
});
diff --git a/src/client/views/DocumentDecorations.tsx b/src/client/views/DocumentDecorations.tsx
index 55c211d1d..890c32bcb 100644
--- a/src/client/views/DocumentDecorations.tsx
+++ b/src/client/views/DocumentDecorations.tsx
@@ -157,22 +157,14 @@ export class DocumentDecorations extends React.Component<{}, { value: string }>
this.onBackgroundUp(e);
}
- @observable _forceUpdate = 0;
- _lastBox = { x: 0, y: 0, r: 0, b: 0 };
@computed
get Bounds(): { x: number, y: number, b: number, r: number } {
- let x = this._forceUpdate;
- this._lastBox = SelectionManager.SelectedDocuments().reduce((bounds, documentView) => {
+ return SelectionManager.SelectedDocuments().reduce((bounds, documentView) => {
if (documentView.props.renderDepth === 0 ||
Doc.AreProtosEqual(documentView.props.Document, CurrentUserUtils.UserDocument)) {
return bounds;
}
let transform = (documentView.props.ScreenToLocalTransform().scale(documentView.props.ContentScaling())).inverse();
- if (transform.TranslateX === 0 && transform.TranslateY === 0) {
- setTimeout(action(() => this._forceUpdate++), 0); // bcz: fix CollectionStackingView's getTransform() somehow...without this, resizing things in the library view, for instance, show the wrong bounds
- return this._lastBox;
- }
-
var [sptX, sptY] = transform.transformPoint(0, 0);
let [bptX, bptY] = transform.transformPoint(documentView.props.PanelWidth(), documentView.props.PanelHeight());
if (documentView.props.Document.type === DocumentType.LINK) {
@@ -187,7 +179,6 @@ export class DocumentDecorations extends React.Component<{}, { value: string }>
r: Math.max(bptX, bounds.r), b: Math.max(bptY, bounds.b)
};
}, { x: Number.MAX_VALUE, y: Number.MAX_VALUE, r: Number.MIN_VALUE, b: Number.MIN_VALUE });
- return this._lastBox;
}
onBackgroundDown = (e: React.PointerEvent): void => {
@@ -557,8 +548,8 @@ export class DocumentDecorations extends React.Component<{}, { value: string }>
}
}
public showTextBar = () => {
- if (this.TextBar) {
- TooltipTextMenu.Toolbar && Array.from(this.TextBar.childNodes).indexOf(TooltipTextMenu.Toolbar) === -1 && this.TextBar.appendChild(TooltipTextMenu.Toolbar);
+ if (this.TextBar && TooltipTextMenu.Toolbar && Array.from(this.TextBar.childNodes).indexOf(TooltipTextMenu.Toolbar) === -1) {
+ this.TextBar.appendChild(TooltipTextMenu.Toolbar);
}
}
render() {
diff --git a/src/client/views/animationtimeline/Track.tsx b/src/client/views/animationtimeline/Track.tsx
index 14e309f68..e66b42690 100644
--- a/src/client/views/animationtimeline/Track.tsx
+++ b/src/client/views/animationtimeline/Track.tsx
@@ -51,7 +51,10 @@ export class Track extends React.Component<IProps> {
componentWillMount() {
runInAction(() => {
- if (!this.props.node.regions) this.props.node.regions = new List<Doc>();
+ if (!this.props.node.regions) this.props.node.regions = new List<Doc>();
+ console.log("hi");
+ console.log("HELLO");
+ console.log("hi");
});
}
diff --git a/src/client/views/collections/CollectionSchemaView.tsx b/src/client/views/collections/CollectionSchemaView.tsx
index 203c68463..ebd47fd19 100644
--- a/src/client/views/collections/CollectionSchemaView.tsx
+++ b/src/client/views/collections/CollectionSchemaView.tsx
@@ -141,7 +141,6 @@ export class CollectionSchemaView extends CollectionSubView(doc => doc) {
<ContentFittingDocumentView
Document={layoutDoc}
DataDocument={this.previewDocument !== this.props.DataDoc ? this.props.DataDoc : undefined}
- fieldKey={this.props.fieldKey}
childDocs={this.childDocs}
renderDepth={this.props.renderDepth}
ruleProvider={this.props.Document.isRuleProvider && layoutDoc && layoutDoc.type !== DocumentType.TEXT ? this.props.Document : this.props.ruleProvider}
diff --git a/src/client/views/collections/CollectionStackingView.tsx b/src/client/views/collections/CollectionStackingView.tsx
index 15033e51a..be3bfca0a 100644
--- a/src/client/views/collections/CollectionStackingView.tsx
+++ b/src/client/views/collections/CollectionStackingView.tsx
@@ -168,7 +168,6 @@ export class CollectionStackingView extends CollectionSubView(doc => doc) {
return <ContentFittingDocumentView
Document={doc}
DataDocument={dataDoc}
- fieldKey={this.props.fieldKey}
showOverlays={this.overlays}
renderDepth={this.props.renderDepth}
ruleProvider={this.props.Document.isRuleProvider && layoutDoc.type !== DocumentType.TEXT ? this.props.Document : this.props.ruleProvider}
diff --git a/src/client/views/collections/CollectionTreeView.tsx b/src/client/views/collections/CollectionTreeView.tsx
index 8726726bb..0e3f0d1a9 100644
--- a/src/client/views/collections/CollectionTreeView.tsx
+++ b/src/client/views/collections/CollectionTreeView.tsx
@@ -23,7 +23,6 @@ import { EditableView } from "../EditableView";
import { MainView } from '../MainView';
import { KeyValueBox } from '../nodes/KeyValueBox';
import { Templates } from '../Templates';
-import { CollectionViewType } from './CollectionView';
import { ContentFittingDocumentView } from '../nodes/ContentFittingDocumentView';
import { CollectionSubView } from "./CollectionSubView";
import "./CollectionTreeView.scss";
@@ -177,8 +176,10 @@ class TreeView extends React.Component<TreeViewProps> {
/>)
onWorkspaceContextMenu = (e: React.MouseEvent): void => {
- if (!e.isPropagationStopped()) { // need to test this because GoldenLayout causes a parallel hierarchy in the React DOM for its children and the main document view7
- if (NumCast(this.props.document.viewType) !== CollectionViewType.Docking && this.props.document !== CurrentUserUtils.UserDocument.workspaces) {
+ if (!e.isPropagationStopped()) { // need to test this because GoldenLayout causes a parallel hierarchy in the React DOM for its children and the main document view
+ if (this.props.document === CurrentUserUtils.UserDocument.recentlyClosed) {
+ ContextMenu.Instance.addItem({ description: "Clear All", event: () => Doc.GetProto(CurrentUserUtils.UserDocument.recentlyClosed as Doc).data = new List<Doc>(), icon: "plus" });
+ } else if (this.props.document !== CurrentUserUtils.UserDocument.workspaces) {
ContextMenu.Instance.addItem({ description: "Pin to Presentation", event: () => this.props.pinToPres(this.props.document), icon: "tv" });
ContextMenu.Instance.addItem({ description: "Open Tab", event: () => this.props.addDocTab(this.props.document, this.templateDataDoc, "inTab"), icon: "folder" });
ContextMenu.Instance.addItem({ description: "Open Right", event: () => this.props.addDocTab(this.props.document, this.templateDataDoc, "onRight"), icon: "caret-square-right" });
@@ -317,7 +318,6 @@ class TreeView extends React.Component<TreeViewProps> {
<ContentFittingDocumentView
Document={layoutDoc}
DataDocument={this.templateDataDoc}
- fieldKey={this.fieldKey}
renderDepth={this.props.renderDepth}
showOverlays={this.noOverlays}
ruleProvider={this.props.document.isRuleProvider && layoutDoc.type !== DocumentType.TEXT ? this.props.document : this.props.ruleProvider}
@@ -538,6 +538,11 @@ export class CollectionTreeView extends CollectionSubView(Document) {
e.stopPropagation();
e.preventDefault();
ContextMenu.Instance.displayMenu(e.pageX - 15, e.pageY - 15);
+ } else if (!e.isPropagationStopped() && this.props.Document === CurrentUserUtils.UserDocument.recentlyClosed) {
+ ContextMenu.Instance.addItem({ description: "Clear All", event: () => CurrentUserUtils.UserDocument.recentlyClosed = new List<Doc>(), icon: "plus" });
+ e.stopPropagation();
+ e.preventDefault();
+ ContextMenu.Instance.displayMenu(e.pageX - 15, e.pageY - 15);
} else {
let layoutItems: ContextMenuProps[] = [];
layoutItems.push({ description: this.props.Document.preventTreeViewOpen ? "Persist Treeview State" : "Abandon Treeview State", event: () => this.props.Document.preventTreeViewOpen = !this.props.Document.preventTreeViewOpen, icon: "paint-brush" });
diff --git a/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx b/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx
index 2d7a557b5..f6240b6f8 100644
--- a/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx
+++ b/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx
@@ -335,7 +335,7 @@ export class CollectionFreeFormView extends CollectionSubView(PanZoomDocument) {
@action
onPointerWheel = (e: React.WheelEvent): void => {
- if (this.props.Document.lockedPosition || this.props.Document.inOverlay) return;
+ if (this.props.Document.lockedTransform || this.props.Document.inOverlay) return;
if (!e.ctrlKey && this.props.Document.scrollHeight !== undefined) { // things that can scroll vertically should do that instead of zooming
e.stopPropagation();
}
@@ -357,7 +357,7 @@ export class CollectionFreeFormView extends CollectionSubView(PanZoomDocument) {
@action
setPan(panX: number, panY: number, panType: string = "None") {
- if (!this.Document.lockedPosition || this.Document.inOverlay) {
+ if (!this.Document.lockedTransform || this.Document.inOverlay) {
this.Document.panTransformType = panType;
var scale = this.getLocalTransform().inverse().Scale;
const newPanX = Math.min((1 - 1 / scale) * this.nativeWidth, Math.max(0, panX));
diff --git a/src/client/views/nodes/ContentFittingDocumentView.tsx b/src/client/views/nodes/ContentFittingDocumentView.tsx
index f41c4fc91..c8255b6fe 100644
--- a/src/client/views/nodes/ContentFittingDocumentView.tsx
+++ b/src/client/views/nodes/ContentFittingDocumentView.tsx
@@ -20,7 +20,6 @@ interface ContentFittingDocumentViewProps {
childDocs?: Doc[];
renderDepth: number;
fitToBox?: boolean;
- fieldKey: string;
PanelWidth: () => number;
PanelHeight: () => number;
ruleProvider: Doc | undefined;
@@ -37,6 +36,7 @@ interface ContentFittingDocumentViewProps {
whenActiveChanged: (isActive: boolean) => void;
addDocTab: (document: Doc, dataDoc: Doc | undefined, where: string) => boolean;
pinToPres: (document: Doc) => void;
+ dontRegisterView?: boolean;
setPreviewScript: (script: string) => void;
previewScript?: string;
}
@@ -108,6 +108,7 @@ export class ContentFittingDocumentView extends React.Component<ContentFittingDo
focus={this.props.focus || emptyFunction}
backgroundColor={returnEmptyString}
bringToFront={emptyFunction}
+ dontRegisterView={this.props.dontRegisterView}
zoomToScale={emptyFunction}
getScale={returnOne}
/>
diff --git a/src/client/views/nodes/DocumentView.tsx b/src/client/views/nodes/DocumentView.tsx
index 93052ea73..7132f181e 100644
--- a/src/client/views/nodes/DocumentView.tsx
+++ b/src/client/views/nodes/DocumentView.tsx
@@ -74,6 +74,7 @@ export interface DocumentViewProps {
getScale: () => number;
animateBetweenIcon?: (maximize: boolean, target: number[]) => void;
ChromeHeight?: () => number;
+ dontRegisterView?: boolean;
layoutKey?: string;
}
@@ -98,7 +99,8 @@ export class DocumentView extends DocComponent<DocumentViewProps, Document>(Docu
@action
componentDidMount() {
this._mainCont.current && (this._dropDisposer = DragManager.MakeDropTarget(this._mainCont.current, { handlers: { drop: this.drop.bind(this) } }));
- DocumentManager.Instance.DocumentViews.push(this);
+
+ !this.props.dontRegisterView && DocumentManager.Instance.DocumentViews.push(this);
}
@action
@@ -111,7 +113,7 @@ export class DocumentView extends DocComponent<DocumentViewProps, Document>(Docu
componentWillUnmount() {
this._dropDisposer && this._dropDisposer();
Doc.UnBrushDoc(this.props.Document);
- DocumentManager.Instance.DocumentViews.splice(DocumentManager.Instance.DocumentViews.indexOf(this), 1);
+ !this.props.dontRegisterView && DocumentManager.Instance.DocumentViews.splice(DocumentManager.Instance.DocumentViews.indexOf(this), 1);
}
startDragging(x: number, y: number, dropAction: dropActionType, applyAsTemplate?: boolean) {
@@ -136,7 +138,7 @@ export class DocumentView extends DocComponent<DocumentViewProps, Document>(Docu
(Math.abs(e.clientX - this._downX) < Utils.DRAG_THRESHOLD && Math.abs(e.clientY - this._downY) < Utils.DRAG_THRESHOLD)) {
e.stopPropagation();
let preventDefault = true;
- if (this._doubleTap && this.props.renderDepth && (!this.onClickHandler || !this.onClickHandler.script)) { // disable double-click to show full screen for things that have an on click behavior since clicking them twice can be misinterpreted as a double click
+ if (this._doubleTap && this.props.renderDepth && !this.onClickHandler?.script) { // disable double-click to show full screen for things that have an on click behavior since clicking them twice can be misinterpreted as a double click
let fullScreenAlias = Doc.MakeAlias(this.props.Document);
if (StrCast(fullScreenAlias.layoutKey) !== "layoutCustom" && fullScreenAlias.layoutCustom !== undefined) {
fullScreenAlias.layoutKey = "layoutCustom";
@@ -350,9 +352,9 @@ export class DocumentView extends DocComponent<DocumentViewProps, Document>(Docu
@undoBatch
@action
setCustomView = (custom: boolean): void => {
- if (this.props.ContainingCollectionView && this.props.ContainingCollectionView.props.DataDoc) {
- Doc.MakeMetadataFieldTemplate(this.props.Document, this.props.ContainingCollectionView.props.DataDoc);
- } else { // bcz: not robust -- for now documents with string layout are native documents, and those with Doc layouts are customized
+ if (this.props.ContainingCollectionView?.props.DataDoc || this.props.ContainingCollectionView?.props.Document.isTemplateDoc) {
+ Doc.MakeMetadataFieldTemplate(this.props.Document, this.props.ContainingCollectionView.props.Document);
+ } else {
custom ? DocumentView.makeCustomViewClicked(this.props.Document, this.props.DataDoc) : DocumentView.makeNativeViewClicked(this.props.Document);
}
}
@@ -370,6 +372,12 @@ export class DocumentView extends DocComponent<DocumentViewProps, Document>(Docu
this.Document.lockedPosition = this.Document.lockedPosition ? undefined : true;
}
+ @undoBatch
+ @action
+ toggleLockTransform = (): void => {
+ this.Document.lockedTransform = this.Document.lockedTransform ? undefined : true;
+ }
+
listen = async () => {
Doc.GetProto(this.props.Document).transcript = await DictationManager.Controls.listen({
continuous: { indefinite: true },
@@ -442,6 +450,7 @@ export class DocumentView extends DocComponent<DocumentViewProps, Document>(Docu
layoutItems.push({ description: `${this.Document.autoHeight ? "Variable Height" : "Auto Height"}`, event: () => this.layoutDoc.autoHeight = !this.layoutDoc.autoHeight, icon: "plus" });
layoutItems.push({ description: this.Document.ignoreAspect || !this.Document.nativeWidth || !this.Document.nativeHeight ? "Freeze" : "Unfreeze", event: this.freezeNativeDimensions, icon: "snowflake" });
layoutItems.push({ description: this.Document.lockedPosition ? "Unlock Position" : "Lock Position", event: this.toggleLockPosition, icon: BoolCast(this.Document.lockedPosition) ? "unlock" : "lock" });
+ layoutItems.push({ description: this.Document.lockedTransform ? "Unlock Transform" : "Lock Transform", event: this.toggleLockTransform, icon: BoolCast(this.Document.lockedTransform) ? "unlock" : "lock" });
layoutItems.push({ description: "Center View", event: () => this.props.focus(this.props.Document, false), icon: "crosshairs" });
layoutItems.push({ description: "Zoom to Document", event: () => this.props.focus(this.props.Document, true), icon: "search" });
if (this.Document.type !== DocumentType.COL && this.Document.type !== DocumentType.TEMPLATE) {
@@ -630,7 +639,7 @@ export class DocumentView extends DocComponent<DocumentViewProps, Document>(Docu
{searchHighlight}
</div>
}
- </>
+ </>;
}
render() {
if (!this.props.Document) return (null);
diff --git a/src/client/views/nodes/FontIconBox.tsx b/src/client/views/nodes/FontIconBox.tsx
index ae9273639..83ecc4657 100644
--- a/src/client/views/nodes/FontIconBox.tsx
+++ b/src/client/views/nodes/FontIconBox.tsx
@@ -25,7 +25,7 @@ export class FontIconBox extends DocComponent<FieldViewProps, FontIconDocument>(
this._backgroundReaction = reaction(() => this.props.Document.backgroundColor,
() => {
if (this._ref && this._ref.current) {
- let col = Utils.fromRGBAstr(getComputedStyle(this._ref.current).backgroundColor!);
+ let col = Utils.fromRGBAstr(getComputedStyle(this._ref.current).backgroundColor);
let colsum = (col.r + col.g + col.b);
if (colsum / col.a > 600 || col.a < 0.25) runInAction(() => this._foregroundColor = "black");
else if (colsum / col.a <= 600 || col.a >= .25) runInAction(() => this._foregroundColor = "white");
diff --git a/src/client/views/nodes/FormattedTextBox.scss b/src/client/views/nodes/FormattedTextBox.scss
index a4acd3b82..b497b12b4 100644
--- a/src/client/views/nodes/FormattedTextBox.scss
+++ b/src/client/views/nodes/FormattedTextBox.scss
@@ -36,6 +36,18 @@
}
}
+.collectionfreeformview-container {
+ position: relative;
+}
+.formattedTextBox-outer {
+ position: relative;
+ overflow: auto;
+ display: inline-block;
+ padding: 10px 10px;
+ width: 100%;
+ height: 100%;
+}
+
.formattedTextBox-inner-rounded {
height: 70%;
width: 85%;
@@ -51,17 +63,17 @@
height: 100%;
}
-.menuicon {
- display: inline-block;
- border-right: 1px solid rgba(0, 0, 0, 0.2);
- color: #888;
- line-height: 1;
- padding: 0 7px;
- margin: 1px;
- cursor: pointer;
- text-align: center;
- min-width: 1.4em;
-}
+// .menuicon {
+// display: inline-block;
+// border-right: 1px solid rgba(0, 0, 0, 0.2);
+// color: #888;
+// line-height: 1;
+// padding: 0 7px;
+// margin: 1px;
+// cursor: pointer;
+// text-align: center;
+// min-width: 1.4em;
+// }
.strong,
.heading {
diff --git a/src/client/views/nodes/FormattedTextBox.tsx b/src/client/views/nodes/FormattedTextBox.tsx
index 24d6f2509..35212b732 100644
--- a/src/client/views/nodes/FormattedTextBox.tsx
+++ b/src/client/views/nodes/FormattedTextBox.tsx
@@ -17,14 +17,13 @@ import { Copy, Id } from '../../../new_fields/FieldSymbols';
import { RichTextField } from "../../../new_fields/RichTextField";
import { RichTextUtils } from '../../../new_fields/RichTextUtils';
import { createSchema, makeInterface } from "../../../new_fields/Schema";
-import { Cast, DateCast, NumCast, StrCast } from "../../../new_fields/Types";
-import { numberRange, Utils, addStyleSheet, addStyleSheetRule, clearStyleSheetRules } from '../../../Utils';
+import { Cast, NumCast, StrCast } from "../../../new_fields/Types";
+import { numberRange, Utils, addStyleSheet, addStyleSheetRule, clearStyleSheetRules, emptyFunction, returnOne } from '../../../Utils';
import { GoogleApiClientUtils, Pulls, Pushes } from '../../apis/google_docs/GoogleApiClientUtils';
import { DocServer } from "../../DocServer";
import { Docs, DocUtils } from '../../documents/Documents';
import { DocumentType } from '../../documents/DocumentTypes';
import { DictationManager } from '../../util/DictationManager';
-import { DocumentManager } from '../../util/DocumentManager';
import { DragManager } from "../../util/DragManager";
import buildKeymap from "../../util/ProsemirrorExampleTransfer";
import { inpRules } from "../../util/RichTextRules";
@@ -33,7 +32,7 @@ import { SelectionManager } from "../../util/SelectionManager";
import { TooltipLinkingMenu } from "../../util/TooltipLinkingMenu";
import { TooltipTextMenu } from "../../util/TooltipTextMenu";
import { undoBatch, UndoManager } from "../../util/UndoManager";
-import { DocExtendableComponent } from "../DocComponent";
+import { DocAnnotatableComponent } from "../DocComponent";
import { DocumentButtonBar } from '../DocumentButtonBar';
import { DocumentDecorations } from '../DocumentDecorations';
import { InkingControl } from "../InkingControl";
@@ -46,6 +45,7 @@ import { ContextMenu } from '../ContextMenu';
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
import { documentSchema } from '../../../new_fields/documentSchemas';
import { AudioBox } from './AudioBox';
+import { CollectionFreeFormView } from '../collections/collectionFreeForm/CollectionFreeFormView';
library.add(faEdit);
library.add(faSmile, faTextHeight, faUpload);
@@ -70,11 +70,11 @@ const RichTextDocument = makeInterface(richTextSchema, documentSchema);
type PullHandler = (exportState: Opt<GoogleApiClientUtils.Docs.ImportResult>, dataDoc: Doc) => void;
@observer
-export class FormattedTextBox extends DocExtendableComponent<(FieldViewProps & FormattedTextBoxProps), RichTextDocument>(RichTextDocument) {
+export class FormattedTextBox extends DocAnnotatableComponent<(FieldViewProps & FormattedTextBoxProps), RichTextDocument>(RichTextDocument) {
public static LayoutString(fieldStr: string) { return FieldView.LayoutString(FormattedTextBox, fieldStr); }
public static blankState = () => EditorState.create(FormattedTextBox.Instance.config);
public static Instance: FormattedTextBox;
- private static _toolTipTextMenu: TooltipTextMenu | undefined = undefined;
+ public static ToolTipTextMenu: TooltipTextMenu | undefined = undefined;
private _ref: React.RefObject<HTMLDivElement> = React.createRef();
private _proseRef?: HTMLDivElement;
private _editorView: Opt<EditorView>;
@@ -85,7 +85,6 @@ export class FormattedTextBox extends DocExtendableComponent<(FieldViewProps & F
private _searchReactionDisposer?: Lambda;
private _scrollToRegionReactionDisposer: Opt<IReactionDisposer>;
private _reactionDisposer: Opt<IReactionDisposer>;
- private _textReactionDisposer: Opt<IReactionDisposer>;
private _heightReactionDisposer: Opt<IReactionDisposer>;
private _rulesReactionDisposer: Opt<IReactionDisposer>;
private _proxyReactionDisposer: Opt<IReactionDisposer>;
@@ -120,7 +119,7 @@ export class FormattedTextBox extends DocExtendableComponent<(FieldViewProps & F
}
public static getToolTip(ev: EditorView) {
- return this._toolTipTextMenu ? this._toolTipTextMenu : this._toolTipTextMenu = new TooltipTextMenu(ev);
+ return this.ToolTipTextMenu ? this.ToolTipTextMenu : this.ToolTipTextMenu = new TooltipTextMenu(ev);
}
@undoBatch
@@ -191,9 +190,8 @@ export class FormattedTextBox extends DocExtendableComponent<(FieldViewProps & F
let tsel = this._editorView.state.selection.$from;
tsel.marks().filter(m => m.type === this._editorView!.state.schema.marks.user_mark).map(m => AudioBox.SetScrubTime(Math.max(0, m.attrs.modified * 5000 - 1000)));
this._applyingChange = true;
- this.extensionDoc && (this.extensionDoc.text = state.doc.textBetween(0, state.doc.content.size, "\n\n"));
this.extensionDoc && (this.extensionDoc.lastModified = new DateField(new Date(Date.now())));
- this.dataDoc[this.props.fieldKey] = new RichTextField(JSON.stringify(state.toJSON()));
+ this.dataDoc[this.props.fieldKey] = new RichTextField(JSON.stringify(state.toJSON()), state.doc.textBetween(0, state.doc.content.size, "\n\n"));
this._applyingChange = false;
this.updateTitle();
this.tryUpdateHeight();
@@ -250,7 +248,7 @@ export class FormattedTextBox extends DocExtendableComponent<(FieldViewProps & F
// replace text contents whend dragging with Alt
if (draggedDoc && draggedDoc.type === DocumentType.TEXT && !Doc.AreProtosEqual(draggedDoc, this.props.Document) && de.mods === "AltKey") {
if (draggedDoc.data instanceof RichTextField) {
- Doc.GetProto(this.dataDoc)[this.props.fieldKey] = new RichTextField(draggedDoc.data.Data);
+ Doc.GetProto(this.dataDoc)[this.props.fieldKey] = new RichTextField(draggedDoc.data.Data, draggedDoc.data.Text);
e.stopPropagation();
}
// apply as template when dragging with Meta
@@ -290,6 +288,7 @@ export class FormattedTextBox extends DocExtendableComponent<(FieldViewProps & F
if (context === node) return { from: offset, to: offset + node.nodeSize };
if (node.isBlock) {
+ // tslint:disable-next-line: prefer-for-of
for (let i = 0; i < (context.content as any).content.length; i++) {
let result = this.getNodeEndpoints((context.content as any).content[i], node);
if (result) {
@@ -360,6 +359,7 @@ export class FormattedTextBox extends DocExtendableComponent<(FieldViewProps & F
specificContextMenu = (e: React.MouseEvent): void => {
let funcs: ContextMenuProps[] = [];
+ funcs.push({ description: "Toggle Sidebar", event: () => { e.stopPropagation(); this.props.Document.sidebarWidthPercent = StrCast(this.props.Document.sidebarWidthPercent, "0%") === "0%" ? "25%" : "0%"; }, icon: "expand-arrows-alt" });
funcs.push({ description: "Record Bullet", event: () => { e.stopPropagation(); this.recordBullet(); }, icon: "expand-arrows-alt" });
["My Text", "Text from Others", "Todo Items", "Important Items", "Ignore Items", "Disagree Items", "By Recent Minute", "By Recent Hour"].forEach(option =>
funcs.push({
@@ -510,17 +510,6 @@ export class FormattedTextBox extends DocExtendableComponent<(FieldViewProps & F
() => this.tryUpdateHeight()
);
- this._textReactionDisposer = reaction(
- () => this.extensionDoc,
- () => {
- if (this.extensionDoc && (this.dataDoc.text || this.dataDoc.lastModified)) {
- this.extensionDoc.text = this.dataDoc.text;
- this.extensionDoc.lastModified = DateCast(this.dataDoc.lastModified)[Copy]();
- this.dataDoc.text = undefined;
- this.dataDoc.lastModified = undefined;
- }
- }, { fireImmediately: true });
-
this.setupEditor(this.config, this.dataDoc, this.props.fieldKey);
@@ -787,7 +776,9 @@ export class FormattedTextBox extends DocExtendableComponent<(FieldViewProps & F
while (refNode && !("getBoundingClientRect" in refNode)) refNode = refNode.parentElement;
let r1 = refNode && refNode.getBoundingClientRect();
let r3 = self._ref.current!.getBoundingClientRect();
- r1 && (self._ref.current!.scrollTop += (r1.top - r3.top) * self.props.ScreenToLocalTransform().Scale);
+ if (r1.top < r3.top || r1.top > r3.bottom) {
+ r1 && (self._ref.current!.scrollTop += (r1.top - r3.top) * self.props.ScreenToLocalTransform().Scale);
+ }
return true;
},
dispatchTransaction: this.dispatchTransaction,
@@ -834,7 +825,6 @@ export class FormattedTextBox extends DocExtendableComponent<(FieldViewProps & F
this._rulesReactionDisposer && this._rulesReactionDisposer();
this._reactionDisposer && this._reactionDisposer();
this._proxyReactionDisposer && this._proxyReactionDisposer();
- this._textReactionDisposer && this._textReactionDisposer();
this._pushReactionDisposer && this._pushReactionDisposer();
this._pullReactionDisposer && this._pullReactionDisposer();
this._heightReactionDisposer && this._heightReactionDisposer();
@@ -857,7 +847,10 @@ export class FormattedTextBox extends DocExtendableComponent<(FieldViewProps & F
}
onPointerUp = (e: React.PointerEvent): void => {
- if (!(e.nativeEvent as any).formattedHandled) { FormattedTextBoxComment.textBox = this; }
+ if (!(e.nativeEvent as any).formattedHandled) {
+ FormattedTextBoxComment.textBox = this;
+ FormattedTextBoxComment.update(this._editorView!);
+ }
(e.nativeEvent as any).formattedHandled = true;
if (e.buttons === 1 && this.props.isSelected() && !e.altKey) {
@@ -968,7 +961,7 @@ export class FormattedTextBox extends DocExtendableComponent<(FieldViewProps & F
let self = FormattedTextBox;
return new Plugin({
view(newView) {
- return self._toolTipTextMenu = FormattedTextBox.getToolTip(newView);
+ return self.ToolTipTextMenu = FormattedTextBox.getToolTip(newView);
}
});
}
@@ -1018,12 +1011,15 @@ export class FormattedTextBox extends DocExtendableComponent<(FieldViewProps & F
}
}
+ @computed get sidebarWidthPercent() { return StrCast(this.props.Document.sidebarWidth, "0%"); }
+ @computed get sidebarWidth() { return Number(this.sidebarWidthPercent.substring(0, this.sidebarWidthPercent.length - 1)) / 100 * this.props.PanelWidth(); }
+ @computed get annotationsKey() { return "annotations"; }
render() {
trace();
let rounded = StrCast(this.layoutDoc.borderRounding) === "100%" ? "-rounded" : "";
let interactive = InkingControl.Instance.selectedTool || this.layoutDoc.isBackground;
if (this.props.isSelected()) {
- FormattedTextBox._toolTipTextMenu!.updateFromDash(this._editorView!, undefined, this.props);
+ FormattedTextBox.ToolTipTextMenu!.updateFromDash(this._editorView!, undefined, this.props);
} else if (FormattedTextBoxComment.textBox === this) {
FormattedTextBoxComment.Hide();
}
@@ -1050,8 +1046,32 @@ export class FormattedTextBox extends DocExtendableComponent<(FieldViewProps & F
onPointerEnter={action(() => this._entered = true)}
onPointerLeave={action(() => this._entered = false)}
>
- <div className={`formattedTextBox-inner${rounded}`} style={{ whiteSpace: "pre-wrap", pointerEvents: ((this.Document.isButton || this.props.onClick) && !this.props.isSelected()) ? "none" : undefined }} ref={this.createDropTarget} />
-
+ <div className={`formattedTextBox-outer`} style={{ width: `calc(100% - ${this.sidebarWidthPercent})`, }}>
+ <div className={`formattedTextBox-inner${rounded}`} style={{ whiteSpace: "pre-wrap", pointerEvents: ((this.Document.isButton || this.props.onClick) && !this.props.isSelected()) ? "none" : undefined }} ref={this.createDropTarget} />
+ </div>
+ {this.sidebarWidthPercent === "0%" ? (null) : <div style={{ borderLeft: "solid 1px black", width: `${this.sidebarWidthPercent}`, height: "100%", display: "inline-block" }}>
+ <CollectionFreeFormView {...this.props}
+ PanelHeight={() => this.props.PanelHeight()}
+ PanelWidth={() => this.sidebarWidth}
+ annotationsKey={this.annotationsKey}
+ isAnnotationOverlay={true}
+ focus={this.props.focus}
+ isSelected={this.props.isSelected}
+ select={emptyFunction}
+ active={this.active}
+ ContentScaling={returnOne}
+ whenActiveChanged={this.whenActiveChanged}
+ removeDocument={this.removeDocument}
+ moveDocument={this.moveDocument}
+ addDocument={this.addDocument}
+ CollectionView={undefined}
+ ScreenToLocalTransform={() => this.props.ScreenToLocalTransform().translate(-(this.props.PanelWidth() - this.sidebarWidth), 0)}
+ ruleProvider={undefined}
+ renderDepth={this.props.renderDepth + 1}
+ ContainingCollectionDoc={this.props.ContainingCollectionDoc}
+ chromeCollapsed={true}>
+ </CollectionFreeFormView>
+ </div>}
<div className="formattedTextBox-dictation"
onClick={e => {
this._recording ? this.stopDictation(true) : this.recordDictation();
diff --git a/src/client/views/nodes/FormattedTextBoxComment.scss b/src/client/views/nodes/FormattedTextBoxComment.scss
index 792cee182..2dd63ec21 100644
--- a/src/client/views/nodes/FormattedTextBoxComment.scss
+++ b/src/client/views/nodes/FormattedTextBoxComment.scss
@@ -5,7 +5,6 @@
background: white;
border: 1px solid silver;
border-radius: 2px;
- padding: 2px 10px;
margin-bottom: 7px;
-webkit-transform: translateX(-50%);
transform: translateX(-50%);
diff --git a/src/client/views/nodes/FormattedTextBoxComment.tsx b/src/client/views/nodes/FormattedTextBoxComment.tsx
index f35ca502f..c076fd34a 100644
--- a/src/client/views/nodes/FormattedTextBoxComment.tsx
+++ b/src/client/views/nodes/FormattedTextBoxComment.tsx
@@ -1,17 +1,20 @@
-import { Plugin, EditorState } from "prosemirror-state";
-import './FormattedTextBoxComment.scss';
-import { ResolvedPos, Mark } from "prosemirror-model";
+import { Mark, ResolvedPos } from "prosemirror-model";
+import { EditorState, Plugin } from "prosemirror-state";
import { EditorView } from "prosemirror-view";
+import * as ReactDOM from 'react-dom';
import { Doc } from "../../../new_fields/Doc";
-import { schema } from "../../util/RichTextSchema";
+import { Cast, FieldValue, NumCast } from "../../../new_fields/Types";
+import { emptyFunction, returnEmptyString, returnFalse, Utils } from "../../../Utils";
import { DocServer } from "../../DocServer";
-import { Utils } from "../../../Utils";
-import { StrCast, Cast, FieldValue } from "../../../new_fields/Types";
-import { FormattedTextBox } from "./FormattedTextBox";
-import { DocUtils } from "../../documents/Documents";
-import { isBuffer } from "util";
import { DocumentManager } from "../../util/DocumentManager";
-import { DocumentType } from "../../documents/DocumentTypes";
+import { schema } from "../../util/RichTextSchema";
+import { Transform } from "../../util/Transform";
+import { ContentFittingDocumentView } from "./ContentFittingDocumentView";
+import { FormattedTextBox } from "./FormattedTextBox";
+import './FormattedTextBoxComment.scss';
+import React = require("react");
+import { Docs } from "../../documents/Documents";
+import wiki from "wikijs";
export let formattedTextBoxCommentPlugin = new Plugin({
view(editorView) { return new FormattedTextBoxComment(editorView); }
@@ -50,6 +53,7 @@ export function findEndOfMark(rpos: ResolvedPos, view: EditorView, finder: (mark
export class FormattedTextBoxComment {
static tooltip: HTMLElement;
static tooltipText: HTMLElement;
+ static tooltipInput: HTMLInputElement;
static start: number;
static end: number;
static mark: Mark;
@@ -59,30 +63,40 @@ export class FormattedTextBoxComment {
constructor(view: any) {
if (!FormattedTextBoxComment.tooltip) {
const root = document.getElementById("root");
- let input = document.createElement("input");
- input.type = "checkbox";
+ FormattedTextBoxComment.tooltipInput = document.createElement("input");
+ FormattedTextBoxComment.tooltipInput.type = "checkbox";
FormattedTextBoxComment.tooltip = document.createElement("div");
FormattedTextBoxComment.tooltipText = document.createElement("div");
+ FormattedTextBoxComment.tooltipText.style.width = "100%";
+ FormattedTextBoxComment.tooltipText.style.height = "100%";
+ FormattedTextBoxComment.tooltipText.style.textOverflow = "ellipsis";
FormattedTextBoxComment.tooltip.appendChild(FormattedTextBoxComment.tooltipText);
FormattedTextBoxComment.tooltip.className = "FormattedTextBox-tooltip";
FormattedTextBoxComment.tooltip.style.pointerEvents = "all";
FormattedTextBoxComment.tooltip.style.maxWidth = "350px";
- FormattedTextBoxComment.tooltip.appendChild(input);
+ FormattedTextBoxComment.tooltip.style.maxHeight = "250px";
+ FormattedTextBoxComment.tooltip.style.width = "100%";
+ FormattedTextBoxComment.tooltip.style.height = "100%";
+ FormattedTextBoxComment.tooltip.style.overflow = "hidden";
+ FormattedTextBoxComment.tooltip.style.display = "none";
+ FormattedTextBoxComment.tooltip.appendChild(FormattedTextBoxComment.tooltipInput);
FormattedTextBoxComment.tooltip.onpointerdown = (e: PointerEvent) => {
let keep = e.target && (e.target as any).type === "checkbox" ? true : false;
- if (FormattedTextBoxComment.linkDoc && !keep && FormattedTextBoxComment.textBox) {
- DocumentManager.Instance.FollowLink(FormattedTextBoxComment.linkDoc, FormattedTextBoxComment.textBox.props.Document,
- (doc: Doc, maxLocation: string) => FormattedTextBoxComment.textBox!.props.addDocTab(doc, undefined, e.ctrlKey ? "inTab" : "onRight"));
+ const textBox = FormattedTextBoxComment.textBox;
+ if (FormattedTextBoxComment.linkDoc && !keep && textBox) {
+ DocumentManager.Instance.FollowLink(FormattedTextBoxComment.linkDoc, textBox.props.Document,
+ (doc: Doc, maxLocation: string) => textBox.props.addDocTab(doc, undefined, e.ctrlKey ? "inTab" : "onRight"));
+ } else if (textBox && (FormattedTextBoxComment.tooltipText as any).href) {
+ textBox.props.addDocTab(Docs.Create.WebDocument((FormattedTextBoxComment.tooltipText as any).href, { title: (FormattedTextBoxComment.tooltipText as any).href, width: 200, height: 400 }), undefined, "onRight");
}
FormattedTextBoxComment.opened = keep || !FormattedTextBoxComment.opened;
- FormattedTextBoxComment.textBox && FormattedTextBoxComment.start !== undefined && FormattedTextBoxComment.textBox.setAnnotation(
+ textBox && FormattedTextBoxComment.start !== undefined && textBox.setAnnotation(
FormattedTextBoxComment.start, FormattedTextBoxComment.end, FormattedTextBoxComment.mark,
FormattedTextBoxComment.opened, keep);
e.stopPropagation();
};
root && root.appendChild(FormattedTextBoxComment.tooltip);
}
- this.update(view, undefined);
}
public static Hide() {
@@ -98,7 +112,7 @@ export class FormattedTextBoxComment {
FormattedTextBoxComment.tooltip && (FormattedTextBoxComment.tooltip.style.display = "");
}
- update(view: EditorView, lastState?: EditorState) {
+ static update(view: EditorView, lastState?: EditorState) {
let state = view.state;
// Don't do anything if the document/selection didn't change
if (lastState && lastState.doc.eq(state.doc) &&
@@ -113,6 +127,12 @@ export class FormattedTextBoxComment {
}
let set = "none";
let nbef = 0;
+ FormattedTextBoxComment.tooltipInput.style.display = "none";
+ FormattedTextBoxComment.tooltip.style.width = "";
+ FormattedTextBoxComment.tooltip.style.height = "";
+ (FormattedTextBoxComment.tooltipText as any).href = "";
+ FormattedTextBoxComment.tooltipText.style.whiteSpace = "";
+ FormattedTextBoxComment.tooltipText.style.overflow = "";
// this section checks to see if the insertion point is over text entered by a different user. If so, it sets ths comment text to indicate the user and the modification date
if (state.selection.$from) {
nbef = findStartOfMark(state.selection.$from, view, findOtherUserMark);
@@ -127,6 +147,7 @@ export class FormattedTextBoxComment {
if (mark && child && ((nbef && naft) || !noselection)) {
FormattedTextBoxComment.tooltipText.textContent = mark.attrs.userid + " date=" + (new Date(mark.attrs.modified * 5000)).toDateString();
set = "";
+ FormattedTextBoxComment.tooltipInput.style.display = "";
}
}
// this checks if the selection is a hyperlink. If so, it displays the target doc's text for internal links, and the url of the target for external links.
@@ -138,15 +159,48 @@ export class FormattedTextBoxComment {
let mark = child && findLinkMark(child.marks);
if (mark && child && nbef && naft) {
FormattedTextBoxComment.tooltipText.textContent = "external => " + mark.attrs.href;
+ if (mark.attrs.href.startsWith("https://en.wikipedia.org/wiki/")) {
+ wiki().page(mark.attrs.href.replace("https://en.wikipedia.org/wiki/", "")).then(page => page.summary().then(summary => FormattedTextBoxComment.tooltipText.textContent = summary.substring(0, 500)));
+ } else {
+ FormattedTextBoxComment.tooltipText.style.whiteSpace = "pre";
+ FormattedTextBoxComment.tooltipText.style.overflow = "hidden";
+ }
+ (FormattedTextBoxComment.tooltipText as any).href = mark.attrs.href;
if (mark.attrs.href.indexOf(Utils.prepend("/doc/")) === 0) {
let docTarget = mark.attrs.href.replace(Utils.prepend("/doc/"), "").split("?")[0];
docTarget && DocServer.GetRefField(docTarget).then(linkDoc => {
if (linkDoc instanceof Doc) {
FormattedTextBoxComment.linkDoc = linkDoc;
- let target = FieldValue(Doc.AreProtosEqual(FieldValue(Cast(linkDoc.anchor1, Doc)), textBox.props.Document) ? Cast(linkDoc.anchor2, Doc) : Cast(linkDoc.anchor1, Doc));
- let ext = (target && target.type !== DocumentType.PDFANNO && Doc.fieldExtensionDoc(target, "data")) || target; // try guessing that the target doc's data is in the 'data' field. probably need an 'overviewLayout' and then just display the target Document ....
- let text = ext && StrCast(ext.text);
- ext && (FormattedTextBoxComment.tooltipText.textContent = (target && target.type === DocumentType.PDFANNO ? "Quoted from " : "") + "=> " + (text || StrCast(ext.title)));
+ const target = FieldValue(Doc.AreProtosEqual(FieldValue(Cast(linkDoc.anchor1, Doc)), textBox.props.Document) ? Cast(linkDoc.anchor2, Doc) : Cast(linkDoc.anchor1, Doc));
+ try {
+ ReactDOM.unmountComponentAtNode(FormattedTextBoxComment.tooltipText);
+ } catch (e) { }
+ if (target) {
+ ReactDOM.render(<ContentFittingDocumentView
+ fitToBox={true}
+ Document={target}
+ moveDocument={returnFalse}
+ getTransform={Transform.Identity}
+ active={returnFalse}
+ setPreviewScript={returnEmptyString}
+ addDocument={returnFalse}
+ removeDocument={returnFalse}
+ ruleProvider={undefined}
+ addDocTab={returnFalse}
+ pinToPres={returnFalse}
+ dontRegisterView={true}
+ renderDepth={1}
+ PanelWidth={() => Math.min(350, NumCast(target.width, 350))}
+ PanelHeight={() => Math.min(250, NumCast(target.height, 250))}
+ focus={emptyFunction}
+ whenActiveChanged={returnFalse}
+ />, FormattedTextBoxComment.tooltipText);
+ FormattedTextBoxComment.tooltip.style.width = NumCast(target.width) ? `${NumCast(target.width)}` : "100%";
+ FormattedTextBoxComment.tooltip.style.height = NumCast(target.height) ? `${NumCast(target.height)}` : "100%";
+ }
+ // let ext = (target && target.type !== DocumentType.PDFANNO && Doc.fieldExtensionDoc(target, "data")) || target; // try guessing that the target doc's data is in the 'data' field. probably need an 'overviewLayout' and then just display the target Document ....
+ // let text = ext && StrCast(ext.text);
+ // ext && (FormattedTextBoxComment.tooltipText.textContent = (target && target.type === DocumentType.PDFANNO ? "Quoted from " : "") + "=> " + (text || StrCast(ext.title)));
}
});
}
@@ -168,5 +222,5 @@ export class FormattedTextBoxComment {
FormattedTextBoxComment.tooltip && (FormattedTextBoxComment.tooltip.style.display = set);
}
- destroy() { FormattedTextBoxComment.tooltip.style.display = "none"; }
+ destroy() { }
}
diff --git a/src/client/views/presentationview/PresElementBox.tsx b/src/client/views/presentationview/PresElementBox.tsx
index 17b2094ec..f50a3a0ef 100644
--- a/src/client/views/presentationview/PresElementBox.tsx
+++ b/src/client/views/presentationview/PresElementBox.tsx
@@ -172,7 +172,6 @@ export class PresElementBox extends DocComponent<FieldViewProps, PresDocument>(P
<ContentFittingDocumentView
fitToBox={StrCast(this.targetDoc.type).indexOf(DocumentType.COL) !== -1}
Document={this.targetDoc}
- fieldKey={this.props.fieldKey}
addDocument={returnFalse}
removeDocument={returnFalse}
ruleProvider={undefined}
diff --git a/src/client/views/search/FilterBox.tsx b/src/client/views/search/FilterBox.tsx
index b841190d4..62f3aba4c 100644
--- a/src/client/views/search/FilterBox.tsx
+++ b/src/client/views/search/FilterBox.tsx
@@ -33,7 +33,7 @@ export enum Keys {
export class FilterBox extends React.Component {
static Instance: FilterBox;
- public _allIcons: string[] = [DocumentType.AUDIO, DocumentType.COL, DocumentType.IMG, DocumentType.LINK, DocumentType.PDF, DocumentType.TEXT, DocumentType.VID, DocumentType.WEB];
+ public _allIcons: string[] = [DocumentType.AUDIO, DocumentType.COL, DocumentType.IMG, DocumentType.LINK, DocumentType.PDF, DocumentType.TEXT, DocumentType.VID, DocumentType.WEB, DocumentType.TEMPLATE];
//if true, any keywords can be used. if false, all keywords are required.
//this also serves as an indicator if the word status filter is applied
@@ -82,7 +82,7 @@ export class FilterBox extends React.Component {
var panel = this.nextElementSibling as HTMLElement;
if (panel.style.maxHeight) {
panel.style.overflow = "hidden";
- panel.style.maxHeight = null;
+ panel.style.maxHeight = "";
panel.style.opacity = "0";
} else {
setTimeout(() => {
@@ -114,7 +114,7 @@ export class FilterBox extends React.Component {
acc[i].classList.toggle("active");
var panel = acc[i].nextElementSibling as HTMLElement;
panel.style.overflow = "hidden";
- panel.style.maxHeight = null;
+ panel.style.maxHeight = "";
}
}
});
diff --git a/src/new_fields/Doc.ts b/src/new_fields/Doc.ts
index f3c74428a..08d808e78 100644
--- a/src/new_fields/Doc.ts
+++ b/src/new_fields/Doc.ts
@@ -473,8 +473,9 @@ export namespace Doc {
export function CreateDocumentExtensionForField(doc: Doc, fieldKey: string) {
let docExtensionForField = new Doc(doc[Id] + fieldKey, true);
- docExtensionForField.title = fieldKey + ".ext";
+ docExtensionForField.title = fieldKey + ".ext"; // courtesy field--- shouldn't be needed except maybe for debugging
docExtensionForField.extendsDoc = doc; // this is used by search to map field matches on the extension doc back to the document it extends.
+ docExtensionForField.extendsField = fieldKey; // this can be used by search to map matches on the extension doc back to the field that was extended.
docExtensionForField.type = DocumentType.EXTENSION;
let proto: Doc | undefined = doc;
while (proto && !Doc.IsPrototype(proto) && proto.proto) {
@@ -569,7 +570,7 @@ export namespace Doc {
let layoutCustomLayout = Doc.MakeDelegate(templateDoc);
titleTarget && (Doc.GetProto(target).title = titleTarget);
- target.type = DocumentType.TEMPLATE;
+ Doc.GetProto(target).type = DocumentType.TEMPLATE;
target.onClick = templateDoc.onClick instanceof ObjectField && templateDoc.onClick[Copy]();
Doc.GetProto(target)[targetKey] = layoutCustomLayout;
diff --git a/src/new_fields/RichTextField.ts b/src/new_fields/RichTextField.ts
index 499d7b949..e86251732 100644
--- a/src/new_fields/RichTextField.ts
+++ b/src/new_fields/RichTextField.ts
@@ -10,18 +10,22 @@ export class RichTextField extends ObjectField {
@serializable(true)
readonly Data: string;
- constructor(data: string) {
+ @serializable(true)
+ readonly Text: string;
+
+ constructor(data: string, text: string = "") {
super();
this.Data = data;
+ this.Text = text;
}
[Copy]() {
- return new RichTextField(this.Data);
+ return new RichTextField(this.Data, this.Text);
}
[ToScriptString]() {
- return `new RichTextField("${this.Data}")`;
+ return `new RichTextField("${this.Data}", "${this.Text}")`;
}
} \ No newline at end of file
diff --git a/src/new_fields/RichTextUtils.ts b/src/new_fields/RichTextUtils.ts
index 601939ed2..c2cca859c 100644
--- a/src/new_fields/RichTextUtils.ts
+++ b/src/new_fields/RichTextUtils.ts
@@ -52,7 +52,7 @@ export namespace RichTextUtils {
};
export const Synthesize = (plainText: string, oldState?: RichTextField) => {
- return new RichTextField(ToProsemirrorState(plainText, oldState));
+ return new RichTextField(ToProsemirrorState(plainText, oldState), plainText);
};
export const ToPlainText = (state: EditorState) => {
diff --git a/src/new_fields/SchemaHeaderField.ts b/src/new_fields/SchemaHeaderField.ts
index 92d0aec9a..42a8485ac 100644
--- a/src/new_fields/SchemaHeaderField.ts
+++ b/src/new_fields/SchemaHeaderField.ts
@@ -41,6 +41,17 @@ export const PastelSchemaPalette = new Map<string, string>([
export const RandomPastel = () => Array.from(PastelSchemaPalette.values())[Math.floor(Math.random() * PastelSchemaPalette.size)];
+export const DarkPastelSchemaPalette = new Map<string, string>([
+ ["pink2", "#c932b0"],
+ ["purple4", "#913ad6"],
+ ["bluegreen1", "#3978ed"],
+ ["bluegreen7", "#2adb3e"],
+ ["bluegreen5", "#21b0eb"],
+ ["yellow4", "#edcc0c"],
+ ["red2", "#eb3636"],
+ ["orange1", "#f2740f"],
+]);
+
@scriptingGlobal
@Deserializable("schemaheader")
export class SchemaHeaderField extends ObjectField {
diff --git a/src/new_fields/documentSchemas.ts b/src/new_fields/documentSchemas.ts
index e2730914f..fa47374f1 100644
--- a/src/new_fields/documentSchemas.ts
+++ b/src/new_fields/documentSchemas.ts
@@ -31,7 +31,8 @@ export const documentSchema = createSchema({
summarizedDocs: listSpec(Doc), // documents that are summarized by this document (and which will typically be opened by clicking this document)
maximizedDocs: listSpec(Doc), // documents to maximize when clicking this document (generally this document will be an icon)
maximizeLocation: "string", // flag for where to place content when following a click interaction (e.g., onRight, inPlace, inTab)
- lockedPosition: "boolean", // whether the document can be spatially manipulated
+ lockedPosition: "boolean", // whether the document can be moved (dragged)
+ lockedTransform: "boolean", // whether the document can be panned/zoomed
inOverlay: "boolean", // whether the document is rendered in an OverlayView which handles selection/dragging differently
borderRounding: "string", // border radius rounding of document
searchFields: "string", // the search fields to display when this document matches a search in its metadata
diff --git a/src/scraping/buxton/source/.Bill_Notes_NewO.docx.icloud b/src/scraping/buxton/source/.Bill_Notes_NewO.docx.icloud
deleted file mode 100644
index f71886d8c..000000000
--- a/src/scraping/buxton/source/.Bill_Notes_NewO.docx.icloud
+++ /dev/null
Binary files differ
diff --git a/src/scraping/buxton/source/.Bill_Notes_OLPC.docx.icloud b/src/scraping/buxton/source/.Bill_Notes_OLPC.docx.icloud
deleted file mode 100644
index 30ddb3091..000000000
--- a/src/scraping/buxton/source/.Bill_Notes_OLPC.docx.icloud
+++ /dev/null
Binary files differ
diff --git a/src/server/authentication/models/current_user_utils.ts b/src/server/authentication/models/current_user_utils.ts
index 833e44bf6..466e2d707 100644
--- a/src/server/authentication/models/current_user_utils.ts
+++ b/src/server/authentication/models/current_user_utils.ts
@@ -185,6 +185,8 @@ export class CurrentUserUtils {
(doc.curPresentation === undefined) && CurrentUserUtils.setupDefaultPresentation(doc);
(doc.sidebarButtons === undefined) && CurrentUserUtils.setupSidebarButtons(doc);
+ // this is equivalent to using PrefetchProxies to make sure the recentlyClosed doc is ready
+ PromiseValue(Cast(doc.recentlyClosed, Doc)).then(recent => recent && PromiseValue(recent.data).then(DocListCast));
// this is equivalent to using PrefetchProxies to make sure all the sidebarButtons and noteType internal Doc's have been retrieved.
PromiseValue(Cast(doc.noteTypes, Doc)).then(noteTypes => noteTypes && PromiseValue(noteTypes.data).then(DocListCast));
PromiseValue(Cast(doc.sidebarButtons, Doc)).then(stackingDoc => {
diff --git a/src/server/index.ts b/src/server/index.ts
index 1595781dc..ddd909479 100644
--- a/src/server/index.ts
+++ b/src/server/index.ts
@@ -1163,6 +1163,7 @@ const suffixMap: { [type: string]: (string | [string, string | ((json: any) => a
"pdf": ["_t", "url"],
"audio": ["_t", "url"],
"web": ["_t", "url"],
+ "RichTextField": ["_t", value => value.Text],
"date": ["_d", value => new Date(value.date).toISOString()],
"proxy": ["_i", "fieldId"],
"list": ["_l", list => {