Repository 'aurora_star'
hg clone https://toolshed.g2.bx.psu.edu/repos/mingchen0919/aurora_star

Changeset 0:25602263cff0 (2018-12-30)
Commit message:
planemo upload commit 841d8b22bf9f1aaed6bfe8344b60617f45b275b2-dirty
added:
build-and-run-job-scripts.sh
command-line-arguments.csv
expose-outputs-to-galaxy-history.sh
rmarkdown_report.Rmd
rmarkdown_report.xml
rmarkdown_report_render.R
vakata-jstree-3.3.5/.gitignore
vakata-jstree-3.3.5/LICENSE-MIT
vakata-jstree-3.3.5/README.md
vakata-jstree-3.3.5/bower.json
vakata-jstree-3.3.5/component.json
vakata-jstree-3.3.5/composer.json
vakata-jstree-3.3.5/demo/README.md
vakata-jstree-3.3.5/demo/basic/index.html
vakata-jstree-3.3.5/demo/basic/root.json
vakata-jstree-3.3.5/dist/jstree.js
vakata-jstree-3.3.5/dist/jstree.min.js
vakata-jstree-3.3.5/dist/themes/default-dark/32px.png
vakata-jstree-3.3.5/dist/themes/default-dark/40px.png
vakata-jstree-3.3.5/dist/themes/default-dark/style.css
vakata-jstree-3.3.5/dist/themes/default-dark/style.min.css
vakata-jstree-3.3.5/dist/themes/default-dark/throbber.gif
vakata-jstree-3.3.5/dist/themes/default/32px.png
vakata-jstree-3.3.5/dist/themes/default/40px.png
vakata-jstree-3.3.5/dist/themes/default/style.css
vakata-jstree-3.3.5/dist/themes/default/style.min.css
vakata-jstree-3.3.5/dist/themes/default/throbber.gif
vakata-jstree-3.3.5/gruntfile.js
vakata-jstree-3.3.5/jstree.jquery.json
vakata-jstree-3.3.5/package.json
vakata-jstree-3.3.5/src/intro.js
vakata-jstree-3.3.5/src/jstree.changed.js
vakata-jstree-3.3.5/src/jstree.checkbox.js
vakata-jstree-3.3.5/src/jstree.conditionalselect.js
vakata-jstree-3.3.5/src/jstree.contextmenu.js
vakata-jstree-3.3.5/src/jstree.dnd.js
vakata-jstree-3.3.5/src/jstree.js
vakata-jstree-3.3.5/src/jstree.massload.js
vakata-jstree-3.3.5/src/jstree.search.js
vakata-jstree-3.3.5/src/jstree.sort.js
vakata-jstree-3.3.5/src/jstree.state.js
vakata-jstree-3.3.5/src/jstree.types.js
vakata-jstree-3.3.5/src/jstree.unique.js
vakata-jstree-3.3.5/src/jstree.wholerow.js
vakata-jstree-3.3.5/src/misc.js
vakata-jstree-3.3.5/src/outro.js
vakata-jstree-3.3.5/src/sample.js
vakata-jstree-3.3.5/src/themes/base.less
vakata-jstree-3.3.5/src/themes/default-dark/32px.png
vakata-jstree-3.3.5/src/themes/default-dark/40px.png
vakata-jstree-3.3.5/src/themes/default-dark/style.css
vakata-jstree-3.3.5/src/themes/default-dark/style.less
vakata-jstree-3.3.5/src/themes/default-dark/throbber.gif
vakata-jstree-3.3.5/src/themes/default/32px.png
vakata-jstree-3.3.5/src/themes/default/40px.png
vakata-jstree-3.3.5/src/themes/default/style.css
vakata-jstree-3.3.5/src/themes/default/style.less
vakata-jstree-3.3.5/src/themes/default/throbber.gif
vakata-jstree-3.3.5/src/themes/main.less
vakata-jstree-3.3.5/src/themes/mixins.less
vakata-jstree-3.3.5/src/themes/responsive.less
vakata-jstree-3.3.5/src/vakata-jstree.js
vakata-jstree-3.3.5/test/unit/index.html
vakata-jstree-3.3.5/test/unit/libs/qunit.css
vakata-jstree-3.3.5/test/unit/libs/qunit.js
vakata-jstree-3.3.5/test/unit/test.js
vakata-jstree-3.3.5/test/visual/desktop/index.html
vakata-jstree-3.3.5/test/visual/mobile/index.html
vakata-jstree-3.3.5/test/visual/screenshots/desktop/.png
vakata-jstree-3.3.5/test/visual/screenshots/desktop/desktop.png
vakata-jstree-3.3.5/test/visual/screenshots/desktop/home.png
vakata-jstree-3.3.5/test/visual/screenshots/mobile/.png
vakata-jstree-3.3.5/test/visual/screenshots/mobile/home.png
vakata-jstree-3.3.5/test/visual/screenshots/mobile/mobile.png
b
diff -r 000000000000 -r 25602263cff0 build-and-run-job-scripts.sh
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/build-and-run-job-scripts.sh Sun Dec 30 13:11:48 2018 -0500
b
@@ -0,0 +1,49 @@
+# run SHELL_SCRIPT within tool outputs directory
+cd ${REPORT_FILES_PATH}
+
+#--------- job 1: index genome --------
+# create genome directory for genome indexes
+mkdir -p ${X_d}/genomeDir
+
+cat >temp.sh <<EOF
+STAR \\
+  --runMode genomeGenerate \\
+  --genomeDir ${X_d}/genomeDir \\
+  --genomeFastaFiles $( echo ${X_A} | sed 's/,/ /g' ) \\
+  --sjdbGTFfile ${X_B} \\
+  --sjdbOverhang ${X_C} \\
+  > genome-indexing.log.txt 2>&1
+EOF
+
+grep -v None temp.sh > index-genome.sh
+
+# run star
+sh index-genome.sh
+
+#--------- job 2: mapping ---------
+cat >temp.sh <<EOF
+STAR \\
+  --genomeDir ${X_d}/genomeDir \\
+  --readFilesIn \\
+  ${X_F} \\
+  ${X_R} \\
+  > mapping.log.txt 2>&1
+EOF
+
+grep -v None temp.sh > mapping.sh
+
+# remove temp.sh
+rm temp.sh
+
+# run mapping
+sh mapping.sh
+
+
+
+#--------- job 3: SAM to sorted BAM ------
+echo "samtools sort -o Aligned.out.sorted.bam Aligned.out.sam" > sam2bam.sh
+sh sam2bam.sh
+
+#--------- job 4: evaluate mapping -------
+echo "samtools flagstat Aligned.out.sorted.bam > flagstat.txt" > flagstat.sh
+sh flagstat.sh
\ No newline at end of file
b
diff -r 000000000000 -r 25602263cff0 command-line-arguments.csv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/command-line-arguments.csv Sun Dec 30 13:11:48 2018 -0500
b
@@ -0,0 +1,9 @@
+short flag,argument mask,data type,variable name
+o,1,character,report
+d,1,character,report.files_path
+A,1,character,genomeFastaFiles
+B,1,character,sjdbGTFfile
+C,1,character,sjdbOverhang
+F,1,character,first_reads
+R,1,character,second_reads
+S,1,character,sorted_bam
b
diff -r 000000000000 -r 25602263cff0 expose-outputs-to-galaxy-history.sh
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/expose-outputs-to-galaxy-history.sh Sun Dec 30 13:11:48 2018 -0500
[
@@ -0,0 +1,13 @@
+# change directory to tool outputs directory
+cd ${REPORT_FILES_PATH}
+
+# copy outputs from tool outputs directory to corresponding galaxy output path
+if [ -e "rmarkdown_report.html" ]; then
+  cp rmarkdown_report.html ${REPORT}
+fi
+
+if [ -e "index.html" ]; then
+  cp index.html ${REPORT}
+fi
+
+cp Aligned.out.sorted.bam ${X_S}
\ No newline at end of file
b
diff -r 000000000000 -r 25602263cff0 rmarkdown_report.Rmd
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/rmarkdown_report.Rmd Sun Dec 30 13:11:48 2018 -0500
b
@@ -0,0 +1,110 @@
+---
+title: 'STAR: RNA-Seq aligner'
+output:
+    html_document:
+      highlight: pygments
+---
+
+```{r setup, include=FALSE, warning=FALSE, message=FALSE}
+knitr::opts_chunk$set(error = TRUE, echo = FALSE)
+```
+
+```{css, echo=FALSE}
+pre code, pre, code {
+  white-space: pre !important;
+  overflow-x: scroll !important;
+  word-break: keep-all !important;
+  word-wrap: initial !important;
+}
+```
+
+```{r, echo=FALSE}
+# to make the css theme to work, <link></link> tags cannot be added directly 
+# as <script></script> tags as below.
+# it has to be added using a code chunk with the htmltool functions!!!
+css_link = tags$link()
+css_link$attribs = list(rel="stylesheet", href="vakata-jstree-3.3.5/dist/themes/default/style.min.css")
+css_link
+```
+
+```{r, eval=FALSE, echo=FALSE}
+# this code chunk is purely for adding comments
+# below is to add jQuery and jstree javascripts
+```
+
+<script src="vakata-jstree-3.3.5/dist/jstree.min.js"></script>
+
+
+```{r, eval=FALSE, echo=FALSE}
+# this code chunk is purely for adding comments
+# javascript code below is to build the file tree interface
+# see this for how to implement opening hyperlink: https://stackoverflow.com/questions/18611317/how-to-get-i-get-leaf-nodes-in-jstree-to-open-their-hyperlink-when-clicked-when
+```
+<script>
+  jQuery(function () {
+    // create an instance when the DOM is ready
+    jQuery('#jstree').jstree().bind("select_node.jstree", function (e, data) {
+     window.open( data.node.a_attr.href, data.node.a_attr.target )
+    });
+  });
+</script>
+
+
+```{r, eval=FALSE, echo=FALSE}
+---
+# ADD YOUR DATA ANALYSIS CODE AND MARKUP TEXT BELOW TO EXTEND THIS R MARKDOWN FILE
+---
+```
+
+## Job scripts
+
+```{bash, echo=FALSE}
+sh ${TOOL_INSTALL_DIR}/build-and-run-job-scripts.sh
+```
+
+### Index genome
+
+```{r echo=FALSE,results='asis'}
+# display content of the job-script.sh file.
+cat('```bash\n')
+cat(readLines(paste0(Sys.getenv('REPORT_FILES_PATH'), '/index-genome.sh')), sep = '\n')
+cat('\n```')
+```
+
+### Mapping
+
+```{r echo=FALSE,results='asis'}
+# display content of the job-script.sh file.
+cat('```bash\n')
+cat(readLines(paste0(Sys.getenv('REPORT_FILES_PATH'), '/mapping.sh')), sep = '\n')
+cat('\n```')
+```
+
+### SAM to sorted BAM
+
+```{r echo=FALSE,warning=FALSE,results='asis'}
+# display content of the job-script.sh file.
+cat('```bash\n')
+cat(readLines(paste0(Sys.getenv('REPORT_FILES_PATH'), '/sam2bam.sh')), sep = '\n')
+cat('\n```')
+```
+
+### Mapping evaluation
+
+```{r echo=FALSE,warning=FALSE,results='asis'}
+# display content of the job-script.sh file.
+cat('```bash\n')
+cat(readLines(paste0(Sys.getenv('REPORT_FILES_PATH'), '/flagstat.sh')), sep = '\n')
+cat('\n```')
+```
+
+
+### Mapping evaluation results
+
+```{r echo=FALSE,warning=FALSE,results='asis'}
+# display content of the job-script.sh file.
+cat('```bash\n')
+cat(readLines(paste0(Sys.getenv('REPORT_FILES_PATH'), '/flagstat.txt')), sep = '\n')
+cat('\n```')
+```
+
b
diff -r 000000000000 -r 25602263cff0 rmarkdown_report.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/rmarkdown_report.xml Sun Dec 30 13:11:48 2018 -0500
[
@@ -0,0 +1,98 @@
+<tool name="aurora_star" id='aurora_star_report' version="2.0.1">
+    <description>
+        ultrafast universal RNA-seq aligner
+    </description>
+    <requirements>
+        <requirement type="package" version="2.5">pandoc</requirement>
+        <requirement type="package" version="1.20.2">r-getopt</requirement>
+        <requirement type="package" version="1.10">r-rmarkdown</requirement>
+        <requirement type="package" version="2.5.4a">star</requirement>
+        <requirement type="package" version="1.7">samtools</requirement>
+    </requirements>
+    <command><![CDATA[
+
+        ######### each aurora tool generates a html file and have an files path directory associated with it.
+        mkdir -p $report.files_path &&
+
+        ######### three important paths:
+        #########   1. path to tool installation directory
+        #########   2. path to report html
+        #########   3. path to files_path directory associated with the report output.
+        export TOOL_INSTALL_DIR='${__tool_directory__}' &&
+        export REPORT='$report' &&
+        export REPORT_FILES_PATH='$report.files_path' &&
+
+        ############ create a hidden file to store r markdown rendering log
+        touch $report.files_path/.r_rendering.log.txt &&
+
+        ############ finally run the render.R script
+        Rscript '${__tool_directory__}/rmarkdown_report_render.R'
+        
+            -o $report
+            -d $report.files_path
+
+            -A '$genomeFastaFiles'
+            -B '$sjdbGTFfile'
+            -C '$sjdbOverhang'
+            -F '$first_reads'
+            -R '$second_reads'
+            -S '$sorted_bam'
+
+    ]]></command>
+    <inputs>
+        <param type="data" name="first_reads" label="First reads" optional="False" format="fastq,fastqsanger"/>
+        <param type="data" name="second_reads" label="Second reads" optional="True" format="fastq,fastqsanger"/>
+        <param type="data" name="genomeFastaFiles" argument="--genomeFastaFiles" label="Genome fasta files"
+               optional="False" format="fasta,fa"/>
+        <param type="data" name="sjdbGTFfile" argument="--sjdbGTFfile" label="Annotated transcripts"
+               help="the file with annotated transcripts in the standard GTF format. STAR will extract splice junctions from this file and use them to greatly improve accuracy of the mapping. While this is optional, and STAR can be run without annotations, using annotations is highly recommended whenever they are available."
+               optional="True" format="gtf"/>
+        <param type="integer" name="sjdbOverhang" argument="--sjdbOverhang" label="sjdbOverhang"
+               help="the length of the genomic sequence around the annotated junction to be used in constructing the splice junctions database. Ideally, this length should be equal to the ReadLength-1, where ReadLength is the length of the reads. For instance, for Illumina 2x100b paired-end reads, the ideal value is 100-1=99. In case of reads of varying length, the ideal value is max(ReadLength)-1. In most cases, a generic value of 100 will work as well as the ideal value."
+               optional="False" value="100" min="1"/>
+    </inputs>
+    <outputs>
+        <data name="report" format="html" label="${tool.name} report on ${on_string}"/>
+        <data name="sorted_bam" format="bam" label="${tool.name} sorted bam on ${on_string}"/>
+    </outputs>
+    <citations>
+        <citation type="bibtex"><![CDATA[
+            @article{allaire2016rmarkdown,
+            title={rmarkdown: Dynamic Documents for R, 2016},
+            author={Allaire, J and Cheng, Joe and Xie, Yihui and McPherson, Jonathan and Chang, Winston and Allen, Jeff
+            and Wickham, Hadley and Atkins, Aron and Hyndman, Rob},
+            journal={R package version 0.9},
+            volume={6},
+            year={2016}
+            }
+        ]]></citation>
+        <citation type="bibtex"><![CDATA[
+            @book{xie2015dynamic,
+            title={Dynamic Documents with R and knitr},
+            author={Xie, Yihui},
+            volume={29},
+            year={2015},
+            publisher={CRC Press}
+            }
+        ]]></citation>
+        <citation type="bibtex"><![CDATA[
+            @online{jstree,
+            author={Bozhanov, Ivan},
+            year = 2018,
+            url = {https://www.jstree.com/}
+            }
+        ]]></citation>
+        <citation type="bibtex"><![CDATA[
+            @article{dobin2013star,
+            title={STAR: ultrafast universal RNA-seq aligner},
+            author={Dobin, Alexander and Davis, Carrie A and Schlesinger, Felix and Drenkow, Jorg and Zaleski, Chris and Jha, Sonali and Batut, Philippe and Chaisson, Mark and Gingeras, Thomas R},
+            journal={Bioinformatics},
+            volume={29},
+            number={1},
+            pages={15--21},
+            year={2013},
+            publisher={Oxford University Press}
+            }
+        ]]></citation>
+    </citations>
+</tool>
b
diff -r 000000000000 -r 25602263cff0 rmarkdown_report_render.R
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/rmarkdown_report_render.R Sun Dec 30 13:11:48 2018 -0500
[
@@ -0,0 +1,157 @@
+##============ Sink warnings and errors to a file ==============
+## use the sink() function to wrap all code within it.
+##==============================================================
+zz = file(paste0(Sys.getenv('REPORT_FILES_PATH'), '/.r_rendering.log.txt'))
+sink(zz)
+sink(zz, type = 'message')
+
+#============== preparation ====================================
+# import libraries
+#------------------------------------------------------------------
+# ADD MORE LIBRARIES HERE IF YOUR TOOL DEPENDS ON OTHER R LIBRARIES
+#------------------------------------------------------------------
+library('getopt')
+library('rmarkdown')
+library('htmltools')
+#------------------------------------------------------------------
+options(stringsAsFactors = FALSE)
+
+
+# define two helper functions
+#-----: helper function 1
+#' \code{getopt_specification_matrix} returns a getopt specification matrix.
+#'
+#' @param specification_file a cvs file within the \code{galaxy_tool_directory} which stores getopt specification matrix data.
+#' The first column are short flags, the second column are argument masks, the third column
+#' is data types. The fourth column are variable names used in the tool XML. These three columns are required.
+#' @param gtg_name the name of a running GTG.
+getopt_specification_matrix = function(specification_file,
+                                       gtg_name = 'gtg',
+                                       tool_dir = Sys.getenv('TOOL_INSTALL_DIR')) {
+  df = read.csv(
+    paste0(tool_dir, '/', specification_file),
+    header = TRUE,
+    stringsAsFactors = FALSE
+  )
+  # check if there are duplicated short flags
+  short_flags = df[, 1]
+  if (length(unique(short_flags)) < length(short_flags)) {
+    cat('----Duplicated short flags found ----\n')
+    cat('short flags: ', df[, 1][duplicated(df[, 1])], '\n')
+    stop('Duplicated short flags are not allowed.')
+  }
+  
+  # use short flags to generate long flags
+  long_flags = paste0('X_', df[, 1])
+  
+  # specification matrix
+  df2 = data.frame(
+    long_flags = long_flags,
+    short_flags = df[, 1],
+    argument_mask = df[, 2],
+    data_type = df[, 3]
+  )
+  
+  as.matrix(df2)
+}
+
+#-----: helper function 2
+#' \code{file_tree} generate file tree of a directory in the format of HTML lists.
+#'
+#' @param dir the path to the directory for generating the file tree.
+#' @param output_dir the REPORT_FILES_PATH folder name, which has the name style: dataset_NUMBER_files.
+# define a recursive function to build html string of the file tree
+file_tree = function(dir = '.') {
+  # get the OUTPUT_DIR folder data: dataset_NUMBER_files
+  report_files_path = Sys.getenv('REPORT_FILES_PATH')
+  output_dir = tail(strsplit(report_files_path, '/')[[1]], 1)
+  
+  files = list.files(path = dir,
+                     recursive = FALSE,
+                     full.names = TRUE)
+  # files also include directorys, need to remove directorys
+  files = files[!dir.exists(files)]
+  dirs = list.dirs(path = dir,
+                   recursive = FALSE,
+                   full.names = TRUE)
+  tags$ul({
+    if (length(files) > 0) {
+      lapply(files, function(x) {
+        path_end = tail(strsplit(x, '/')[[1]], 1)
+        href_path = strsplit(x, paste0(output_dir, '/'))[[1]][2]
+        li_item = tags$li(tags$a(path_end, href = href_path))
+        li_item$attribs = list('data-jstree' = '{"icon":"jstree-file"}')
+        li_item
+      })
+    }
+  },
+  {
+    if (length(dirs) > 0) {
+      lapply(dirs, function(x) {
+        path_end = tail(strsplit(x, '/')[[1]], 1)
+        # hide vakata-jstree-3.3.5 folder
+        if (!(path_end %in% c('vakata-jstree-3.3.5', 'rmarkdown_report_files', 'site_libs'))) {
+          # x_path = strsplit(x, paste0(output_dir, '/'))[[1]][2]
+          li_item = tags$li(path_end, file_tree(x))
+          li_item$attribs = list('data-jstree' = '{"icon":"jstree-folder"}')
+          li_item
+        }
+      })
+    }
+  })
+}
+#----------------- end of help functions -------------------------
+
+
+# import getopt specification matrix from a csv file
+opt = getopt(getopt_specification_matrix('command-line-arguments.csv',
+                                         tool_dir = Sys.getenv('TOOL_INSTALL_DIR')))
+# define environment variables for all input values. this is useful when we
+# want to use input values by other programming language in r markdown
+do.call(Sys.setenv, opt[-1])
+#===============================================================
+
+
+#======================== render Rmd files =========================
+# copy jstree javascript library to tool output directory
+file.copy(
+  from = paste0(Sys.getenv('TOOL_INSTALL_DIR'), '/vakata-jstree-3.3.5'),
+  to = Sys.getenv('REPORT_FILES_PATH'),
+  recursive = TRUE
+)
+
+# if '_site.yml' file exists, this tool is assumed to render a website.
+# otherwise, it renders a single html.
+if (file.exists(paste0(Sys.getenv('TOOL_INSTALL_DIR'), '/_site.yml'))) {
+  # render a website
+  system(command = 'cp -r ${TOOL_INSTALL_DIR}/*.Rmd ${REPORT_FILES_PATH}')
+  system(command = 'cp -r ${TOOL_INSTALL_DIR}/_site.yml ${REPORT_FILES_PATH}')
+  render_site(input = Sys.getenv('REPORT_FILES_PATH'))
+} else {
+  # render a single html
+  system(command = 'cp -r ${TOOL_INSTALL_DIR}/rmarkdown_report.Rmd ${REPORT_FILES_PATH}')
+  # add a few lines to 'rmarkdown_report.Rmd' to generate file tree outputs
+  jstree_lines = '
+## Outputs
+
+```{r, echo=FALSE}
+tags$div(id="jstree", file_tree(Sys.getenv(\'REPORT_FILES_PATH\')))
+```'
+  write(
+    x = jstree_lines,
+    append = TRUE,
+    file = paste0(Sys.getenv('REPORT_FILES_PATH'), '/rmarkdown_report.Rmd')
+  )
+  render(input = paste0(Sys.getenv('REPORT_FILES_PATH'), '/rmarkdown_report.Rmd'))
+}
+#===============================================================
+
+
+#============== expose outputs to galaxy history ===============
+system(command = 'sh ${TOOL_INSTALL_DIR}/expose-outputs-to-galaxy-history.sh')
+#===============================================================
+
+
+##--------end of code rendering .Rmd templates----------------
+sink()
+##=========== End of sinking output=============================
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/.gitignore
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vakata-jstree-3.3.5/.gitignore Sun Dec 30 13:11:48 2018 -0500
b
@@ -0,0 +1,14 @@
+/debug
+/jstree.sublime-project
+/jstree.sublime-workspace
+/bower_components
+/node_modules
+/site
+/nuget
+/demo/filebrowser/data/root
+/npm.txt
+/libs
+/docs
+/dist/libs
+/.vscode
+/.idea
\ No newline at end of file
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/LICENSE-MIT
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vakata-jstree-3.3.5/LICENSE-MIT Sun Dec 30 13:11:48 2018 -0500
b
@@ -0,0 +1,22 @@
+Copyright (c) 2014 Ivan Bozhanov
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/README.md
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vakata-jstree-3.3.5/README.md Sun Dec 30 13:11:48 2018 -0500
[
b'@@ -0,0 +1,663 @@\n+# jstree\n+\n+[jsTree](http://www.jstree.com/) is jquery plugin, that provides interactive trees. It is absolutely free, [open source](https://github.com/vakata/jstree) and distributed under the MIT license.\n+\n+jsTree is easily extendable, themable and configurable, it supports HTML & JSON data sources, AJAX & async callback loading.\n+\n+jsTree functions properly in either box-model (content-box or border-box), can be loaded as an AMD module, and has a built in mobile theme for responsive design, that can easily be customized. It uses jQuery\'s event system, so binding callbacks on various events in the tree is familiar and easy.\n+\n+You also get:\n+ * drag & drop support\n+ * keyboard navigation\n+ * inline edit, create and delete\n+ * tri-state checkboxes\n+ * fuzzy searching\n+ * customizable node types\n+\n+_Aside from this readme you can find a lot more info on [jstree.com](http://www.jstree.com) & [the discussion group](https://groups.google.com/forum/#!forum/jstree)_.\n+\n+---\n+\n+<!-- MarkdownTOC depth=0 autolink=true bracket=round -->\n+\n+- [Getting Started](#getting-started)\n+  - [Include all neccessary files](#include-all-neccessary-files)\n+  - [Populating a tree using HTML](#populating-a-tree-using-html)\n+  - [Populating a tree using an array \\(or JSON\\)](#populating-a-tree-using-an-array-or-json)\n+    - [The required JSON format](#the-required-json-format)\n+  - [Populating the tree using AJAX](#populating-the-tree-using-ajax)\n+  - [Populating the tree using AJAX and lazy loading nodes](#populating-the-tree-using-ajax-and-lazy-loading-nodes)\n+  - [Populating the tree using a callback function](#populating-the-tree-using-a-callback-function)\n+- [Working with events](#working-with-events)\n+- [Interacting with the tree using the API](#interacting-with-the-tree-using-the-api)\n+- [More on configuration](#more-on-configuration)\n+- [Plugins](#plugins)\n+  - [checkbox](#checkbox)\n+  - [contextmenu](#contextmenu)\n+  - [dnd](#dnd)\n+  - [massload](#massload)\n+  - [search](#search)\n+  - [sort](#sort)\n+  - [state](#state)\n+  - [types](#types)\n+  - [unique](#unique)\n+  - [wholerow](#wholerow)\n+  - [More plugins](#more-plugins)\n+- [PHP demos moved to new repository](#php-demos-moved-to-new-repository)\n+- [License & Contributing](#license--contributing)\n+\n+<!-- /MarkdownTOC -->\n+\n+\n+---\n+\n+## Getting Started\n+\n+### Include all neccessary files\n+To get started you need 3 things in your page:\n+ 1. jQuery (anything above 1.9.1 will work)\n+ 2. A jstree theme (there is only one theme supplied by default)\n+ 3. The jstree source file\n+\n+```html\n+<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>\n+\n+<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/jstree/3.3.3/themes/default/style.min.css" />\n+<script src="//cdnjs.cloudflare.com/ajax/libs/jstree/3.3.3/jstree.min.js"></script>\n+```\n+\n+_If you decide to host jstree yourself - the files are located in the `dist` folder. You can safely ignore the `dist/libs` folder._\n+\n+---\n+\n+### Populating a tree using HTML\n+\n+Now we are all set to create a tree, inline HTML is the easiest option (suitable for menus). All you need to do is select a node (using a jQuery selector) and invoke the `.jstree()` function to let jstree know you want to render a tree inside the selected node. `$.jstree.create(element)` can be used too.\n+\n+```html\n+<div id="container">\n+  <ul>\n+    <li>Root node\n+      <ul>\n+        <li>Child node 1</li>\n+        <li>Child node 2</li>\n+      </ul>\n+    </li>\n+  </ul>\n+</div>\n+<script>\n+$(function() {\n+  $(\'#container\').jstree();\n+});\n+</script>\n+```\n+\n+[view result](http://jsfiddle.net/vakata/2kwkh2uL/)\n+\n+_You can add a few options when rendering a node using a data-attribute (note the quotes):_\n+```html\n+<li data-jstree=\'{ "selected" : true, "opened" : true }\'>Root node ...\n+```\n+\n+---\n+\n+### Populating a tree using an array (or JSON)\n+\n+Building trees from HTML is easy, but it is not very flexible, inline JS data is a better option:\n'..b' "state" ]\n+});\n+```\n+\n+### search\n+Adds the possibility to search for items in the tree and show only matching nodes. It also has AJAX / callback hooks, so that search will work on lazy loaded trees too.\n+\n+```html\n+<form id="s">\n+  <input type="search" id="q" />\n+  <button type="submit">Search</button>\n+</form>\n+<script>\n+$("#container").jstree({\n+  "plugins" : ["search"]\n+});\n+$("#s").submit(function(e) {\n+  e.preventDefault();\n+  $("#container").jstree(true).search($("#q").val());\n+});\n+</script>\n+```\n+\n+[view result](http://jsfiddle.net/vakata/2kwkh2uL/4491/)\n+\n+### sort\n+Automatically arranges all sibling nodes according to a comparison config option function, which defaults to alphabetical order.\n+\n+```js\n+$("#tree").jstree({\n+  "plugins" : ["sort"]\n+});\n+```\n+\n+[view result](http://jsfiddle.net/vakata/2kwkh2uL/4492/)\n+\n+### state\n+Saves all opened and selected nodes in the user\'s browser, so when returning to the same tree the previous state will be restored.\n+\n+```js\n+$("#tree").jstree({\n+  // the key is important if you have multiple trees in the same domain\n+  "state" : { "key" : "state_demo" },\n+  "plugins" : ["state"]\n+});\n+```\n+\n+[view result](http://jsfiddle.net/vakata/2kwkh2uL/4493/)\n+\n+### types\n+Makes it possible to add a "type" for a node, which means to easily control nesting rules and icon for groups of nodes instead of individually. To set a node type add a type property to the node structure.\n+\n+```js\n+$("#tree").jstree({\n+  "types" : {\n+    "default" : {\n+      "icon" : "glyphicon glyphicon-flash"\n+    },\n+    "demo" : {\n+      "icon" : "glyphicon glyphicon-ok"\n+    }\n+  },\n+  "plugins" : ["types"]\n+});\n+```\n+\n+[view result](http://jsfiddle.net/vakata/2kwkh2uL/4494/)\n+\n+### unique\n+Enforces that no nodes with the same name can coexist as siblings - prevents renaming and moving nodes to a parent, which already contains a node with the same name.\n+\n+```js\n+$("#tree").jstree({\n+  "plugins" : ["unique"]\n+});\n+```\n+\n+[view result](http://jsfiddle.net/vakata/2kwkh2uL/4495/)\n+\n+### wholerow\n+Makes each node appear block level which makes selection easier. May cause slow down for large trees in old browsers.\n+\n+```js\n+$("#tree").jstree({\n+  "plugins" : ["wholerow"]\n+});\n+```\n+\n+[view result](http://jsfiddle.net/vakata/2kwkh2uL/4496/)\n+\n+### More plugins\n+If you create your own plugin (or download a 3rd party one) you must include its source on the page and list its name in the `"plugins"` config array.\n+\n+```js\n+// conditional select\n+(function ($, undefined) {\n+  "use strict";\n+  $.jstree.defaults.conditionalselect = function () { return true; };\n+  $.jstree.plugins.conditionalselect = function (options, parent) {\n+    this.activate_node = function (obj, e) {\n+      if(this.settings.conditionalselect.call(this, this.get_node(obj))) {\n+        parent.activate_node.call(this, obj, e);\n+      }\n+    };\n+  };\n+})(jQuery);\n+$("#tree").jstree({\n+  "conditionalselect" : function (node) {\n+    return node.text === "Root node" ? false : true;\n+  },\n+  "plugins" : ["conditionalselect"]\n+});\n+```\n+\n+[view result](http://jsfiddle.net/vakata/2kwkh2uL/4497/)\n+\n+As seen here when creating a plugin you can define a default config, add your own functions to jstree, or override existing ones while maintaining the ability to call the overridden function.\n+\n+## PHP demos moved to new repository\n+https://github.com/vakata/jstree-php-demos\n+\n+## License & Contributing\n+\n+_Please do NOT edit files in the "dist" subdirectory as they are generated via grunt. You\'ll find source code in the "src" subdirectory!_\n+\n+If you want to you can always [donate a small amount][paypal] to help the development of jstree.\n+\n+[paypal]: https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&business=paypal@vakata.com&currency_code=USD&amount=&return=http://jstree.com/donation&item_name=Buy+me+a+coffee+for+jsTree\n+\n+Copyright (c) 2014 Ivan Bozhanov (http://vakata.com)\n+\n+Licensed under the [MIT license](http://www.opensource.org/licenses/mit-license.php).\n'
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/bower.json
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vakata-jstree-3.3.5/bower.json Sun Dec 30 13:11:48 2018 -0500
[
@@ -0,0 +1,33 @@
+{
+ "name": "jstree",
+ "license": "MIT",
+ "version": "3.3.5",
+ "main" : [
+ "./dist/jstree.js",
+ "./dist/themes/default/style.css"
+ ],
+ "ignore": [
+ "**/.*",
+ "docs",
+ "demo",
+ "libs",
+ "node_modules",
+ "test",
+ "libs",
+ "jstree.jquery.json",
+ "gruntfile.js",
+ "package.json",
+ "bower.json",
+ "component.json",
+ "LICENCE-MIT",
+ "README.md"
+ ],
+ "dependencies": {
+ "jquery": ">=1.9.1"
+ },
+ "keywords": [
+ "ui",
+ "tree",
+ "jstree"
+ ]
+}
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/component.json
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vakata-jstree-3.3.5/component.json Sun Dec 30 13:11:48 2018 -0500
[
@@ -0,0 +1,28 @@
+{
+ "name": "jstree",
+ "repo": "vakata/jstree",
+ "description": "jsTree is jquery plugin, that provides interactive trees.",
+ "version": "3.3.5",
+ "license": "MIT",
+ "keywords": [
+ "ui",
+ "tree",
+ "jstree"
+ ],
+ "scripts": [
+ "dist/jstree.js",
+ "dist/jstree.min.js"
+ ],
+ "images": [
+ "dist/themes/default/32px.png",
+ "dist/themes/default/40px.png",
+ "dist/themes/default/throbber.gif"
+ ],
+ "styles": [
+ "dist/themes/default/style.css",
+ "dist/themes/default/style.min.css"
+ ],
+ "dependencies": {
+ "components/jquery": ">=1.9.1"
+ }
+}
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/composer.json
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vakata-jstree-3.3.5/composer.json Sun Dec 30 13:11:48 2018 -0500
[
@@ -0,0 +1,46 @@
+{
+ "name": "vakata/jstree",
+ "description": "jsTree is jquery plugin, that provides interactive trees.",
+ "type": "component",
+ "homepage": "http://jstree.com",
+ "license": "MIT",
+ "support": {
+ "issues": "https://github.com/vakata/jstree/issues",
+ "forum": "https://groups.google.com/forum/#!forum/jstree",
+ "source": "https://github.com/vakata/jstree"
+ },
+ "authors": [
+ {
+ "name": "Ivan Bozhanov",
+ "email": "jstree@jstree.com"
+ }
+ ],
+ "require": {
+ "components/jquery": ">=1.9.1"
+ },
+ "suggest": {
+ "robloach/component-installer": "Allows installation of Components via Composer"
+ },
+ "extra": {
+ "component": {
+ "scripts": [
+ "dist/jstree.js"
+ ],
+ "styles": [
+ "dist/themes/default/style.css"
+ ],
+ "images": [
+ "dist/themes/default/32px.png",
+ "dist/themes/default/40px.png",
+ "dist/themes/default/throbber.gif"
+ ],
+ "files": [
+ "dist/jstree.min.js",
+ "dist/themes/default/style.min.css",
+ "dist/themes/default/32px.png",
+ "dist/themes/default/40px.png",
+ "dist/themes/default/throbber.gif"
+ ]
+ }
+ }
+}
\ No newline at end of file
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/demo/README.md
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vakata-jstree-3.3.5/demo/README.md Sun Dec 30 13:11:48 2018 -0500
b
@@ -0,0 +1,2 @@
+## PHP demos moved to new repository
+https://github.com/vakata/jstree-php-demos
\ No newline at end of file
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/demo/basic/index.html
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vakata-jstree-3.3.5/demo/basic/index.html Sun Dec 30 13:11:48 2018 -0500
[
@@ -0,0 +1,146 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8">
+ <title>jstree basic demos</title>
+ <style>
+ html { margin:0; padding:0; font-size:62.5%; }
+ body { max-width:800px; min-width:300px; margin:0 auto; padding:20px 10px; font-size:14px; font-size:1.4em; }
+ h1 { font-size:1.8em; }
+ .demo { overflow:auto; border:1px solid silver; min-height:100px; }
+ </style>
+ <link rel="stylesheet" href="./../../dist/themes/default/style.min.css" />
+</head>
+<body>
+ <h1>HTML demo</h1>
+ <div id="html" class="demo">
+ <ul>
+ <li data-jstree='{ "opened" : true }'>Root node
+ <ul>
+ <li data-jstree='{ "selected" : true }'>Child node 1</li>
+ <li>Child node 2</li>
+ </ul>
+ </li>
+ </ul>
+ </div>
+
+ <h1>Inline data demo</h1>
+ <div id="data" class="demo"></div>
+
+ <h1>Data format demo</h1>
+ <div id="frmt" class="demo"></div>
+
+ <h1>AJAX demo</h1>
+ <div id="ajax" class="demo"></div>
+
+ <h1>Lazy loading demo</h1>
+ <div id="lazy" class="demo"></div>
+
+ <h1>Callback function data demo</h1>
+ <div id="clbk" class="demo"></div>
+
+ <h1>Interaction and events demo</h1>
+ <button id="evts_button">select node with id 1</button> <em>either click the button or a node in the tree</em>
+ <div id="evts" class="demo"></div>
+
+ <script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
+ <script src="./../../dist/jstree.min.js"></script>
+
+ <script>
+ // html demo
+ $('#html').jstree();
+
+ // inline data demo
+ $('#data').jstree({
+ 'core' : {
+ 'data' : [
+ { "text" : "Root node", "children" : [
+ { "text" : "Child node 1" },
+ { "text" : "Child node 2" }
+ ]}
+ ]
+ }
+ });
+
+ // data format demo
+ $('#frmt').jstree({
+ 'core' : {
+ 'data' : [
+ {
+ "text" : "Root node",
+ "state" : { "opened" : true },
+ "children" : [
+ {
+ "text" : "Child node 1",
+ "state" : { "selected" : true },
+ "icon" : "jstree-file"
+ },
+ { "text" : "Child node 2", "state" : { "disabled" : true } }
+ ]
+ }
+ ]
+ }
+ });
+
+ // ajax demo
+ $('#ajax').jstree({
+ 'core' : {
+ 'data' : {
+ "url" : "./root.json",
+ "dataType" : "json" // needed only if you do not supply JSON headers
+ }
+ }
+ });
+
+ // lazy demo
+ $('#lazy').jstree({
+ 'core' : {
+ 'data' : {
+ "url" : "//www.jstree.com/fiddle/?lazy",
+ "data" : function (node) {
+ return { "id" : node.id };
+ }
+ }
+ }
+ });
+
+ // data from callback
+ $('#clbk').jstree({
+ 'core' : {
+ 'data' : function (node, cb) {
+ if(node.id === "#") {
+ cb([{"text" : "Root", "id" : "1", "children" : true}]);
+ }
+ else {
+ cb(["Child"]);
+ }
+ }
+ }
+ });
+
+ // interaction and events
+ $('#evts_button').on("click", function () {
+ var instance = $('#evts').jstree(true);
+ instance.deselect_all();
+ instance.select_node('1');
+ });
+ $('#evts')
+ .on("changed.jstree", function (e, data) {
+ if(data.selected.length) {
+ alert('The selected node is: ' + data.instance.get_node(data.selected[0]).text);
+ }
+ })
+ .jstree({
+ 'core' : {
+ 'multiple' : false,
+ 'data' : [
+ { "text" : "Root node", "children" : [
+ { "text" : "Child node 1", "id" : 1 },
+ { "text" : "Child node 2" }
+ ]}
+ ]
+ }
+ });
+ </script>
+</body>
+</html>
\ No newline at end of file
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/demo/basic/root.json
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vakata-jstree-3.3.5/demo/basic/root.json Sun Dec 30 13:11:48 2018 -0500
[
@@ -0,0 +1,1 @@
+[{"id":1,"text":"Root node","children":[{"id":2,"text":"Child node 1"},{"id":3,"text":"Child node 2"}]}]
\ No newline at end of file
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/dist/jstree.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vakata-jstree-3.3.5/dist/jstree.js Sun Dec 30 13:11:48 2018 -0500
[
b'@@ -0,0 +1,8589 @@\n+/*globals jQuery, define, module, exports, require, window, document, postMessage */\n+(function (factory) {\n+\t"use strict";\n+\tif (typeof define === \'function\' && define.amd) {\n+\t\tdefine([\'jquery\'], factory);\n+\t}\n+\telse if(typeof module !== \'undefined\' && module.exports) {\n+\t\tmodule.exports = factory(require(\'jquery\'));\n+\t}\n+\telse {\n+\t\tfactory(jQuery);\n+\t}\n+}(function ($, undefined) {\n+\t"use strict";\n+/*!\n+ * jsTree 3.3.5\n+ * http://jstree.com/\n+ *\n+ * Copyright (c) 2014 Ivan Bozhanov (http://vakata.com)\n+ *\n+ * Licensed same as jquery - under the terms of the MIT License\n+ *   http://www.opensource.org/licenses/mit-license.php\n+ */\n+/*!\n+ * if using jslint please allow for the jQuery global and use following options:\n+ * jslint: loopfunc: true, browser: true, ass: true, bitwise: true, continue: true, nomen: true, plusplus: true, regexp: true, unparam: true, todo: true, white: true\n+ */\n+/*jshint -W083 */\n+\n+\t// prevent another load? maybe there is a better way?\n+\tif($.jstree) {\n+\t\treturn;\n+\t}\n+\n+\t/**\n+\t * ### jsTree core functionality\n+\t */\n+\n+\t// internal variables\n+\tvar instance_counter = 0,\n+\t\tccp_node = false,\n+\t\tccp_mode = false,\n+\t\tccp_inst = false,\n+\t\tthemes_loaded = [],\n+\t\tsrc = $(\'script:last\').attr(\'src\'),\n+\t\tdocument = window.document; // local variable is always faster to access then a global\n+\n+\t/**\n+\t * holds all jstree related functions and variables, including the actual class and methods to create, access and manipulate instances.\n+\t * @name $.jstree\n+\t */\n+\t$.jstree = {\n+\t\t/**\n+\t\t * specifies the jstree version in use\n+\t\t * @name $.jstree.version\n+\t\t */\n+\t\tversion : \'3.3.5\',\n+\t\t/**\n+\t\t * holds all the default options used when creating new instances\n+\t\t * @name $.jstree.defaults\n+\t\t */\n+\t\tdefaults : {\n+\t\t\t/**\n+\t\t\t * configure which plugins will be active on an instance. Should be an array of strings, where each element is a plugin name. The default is `[]`\n+\t\t\t * @name $.jstree.defaults.plugins\n+\t\t\t */\n+\t\t\tplugins : []\n+\t\t},\n+\t\t/**\n+\t\t * stores all loaded jstree plugins (used internally)\n+\t\t * @name $.jstree.plugins\n+\t\t */\n+\t\tplugins : {},\n+\t\tpath : src && src.indexOf(\'/\') !== -1 ? src.replace(/\\/[^\\/]+$/,\'\') : \'\',\n+\t\tidregex : /[\\\\:&!^|()\\[\\]<>@*\'+~#";.,=\\- \\/${}%?`]/g,\n+\t\troot : \'#\'\n+\t};\n+\t\n+\t/**\n+\t * creates a jstree instance\n+\t * @name $.jstree.create(el [, options])\n+\t * @param {DOMElement|jQuery|String} el the element to create the instance on, can be jQuery extended or a selector\n+\t * @param {Object} options options for this instance (extends `$.jstree.defaults`)\n+\t * @return {jsTree} the new instance\n+\t */\n+\t$.jstree.create = function (el, options) {\n+\t\tvar tmp = new $.jstree.core(++instance_counter),\n+\t\t\topt = options;\n+\t\toptions = $.extend(true, {}, $.jstree.defaults, options);\n+\t\tif(opt && opt.plugins) {\n+\t\t\toptions.plugins = opt.plugins;\n+\t\t}\n+\t\t$.each(options.plugins, function (i, k) {\n+\t\t\tif(i !== \'core\') {\n+\t\t\t\ttmp = tmp.plugin(k, options[k]);\n+\t\t\t}\n+\t\t});\n+\t\t$(el).data(\'jstree\', tmp);\n+\t\ttmp.init(el, options);\n+\t\treturn tmp;\n+\t};\n+\t/**\n+\t * remove all traces of jstree from the DOM and destroy all instances\n+\t * @name $.jstree.destroy()\n+\t */\n+\t$.jstree.destroy = function () {\n+\t\t$(\'.jstree:jstree\').jstree(\'destroy\');\n+\t\t$(document).off(\'.jstree\');\n+\t};\n+\t/**\n+\t * the jstree class constructor, used only internally\n+\t * @private\n+\t * @name $.jstree.core(id)\n+\t * @param {Number} id this instance\'s index\n+\t */\n+\t$.jstree.core = function (id) {\n+\t\tthis._id = id;\n+\t\tthis._cnt = 0;\n+\t\tthis._wrk = null;\n+\t\tthis._data = {\n+\t\t\tcore : {\n+\t\t\t\tthemes : {\n+\t\t\t\t\tname : false,\n+\t\t\t\t\tdots : false,\n+\t\t\t\t\ticons : false,\n+\t\t\t\t\tellipsis : false\n+\t\t\t\t},\n+\t\t\t\tselected : [],\n+\t\t\t\tlast_error : {},\n+\t\t\t\tworking : false,\n+\t\t\t\tworker_queue : [],\n+\t\t\t\tfocused : null\n+\t\t\t}\n+\t\t};\n+\t};\n+\t/**\n+\t * get a reference to an existing instance\n+\t *\n+\t * __Examples__\n+\t *\n+\t *\t// provided a container with an ID of "tree", and a nested node with an ID of "branch"\n+\t *\t// all of there will return the same instance\n'..b'ta.node, true).children(\'.jstree-wholerow\')[e.type === "hover_node"?"addClass":"removeClass"](\'jstree-wholerow-hovered\');\n+\t\t\t\t\t}, this))\n+\t\t\t\t.on("contextmenu.jstree", ".jstree-wholerow", $.proxy(function (e) {\n+\t\t\t\t\t\tif (this._data.contextmenu) {\n+\t\t\t\t\t\t\te.preventDefault();\n+\t\t\t\t\t\t\tvar tmp = $.Event(\'contextmenu\', { metaKey : e.metaKey, ctrlKey : e.ctrlKey, altKey : e.altKey, shiftKey : e.shiftKey, pageX : e.pageX, pageY : e.pageY });\n+\t\t\t\t\t\t\t$(e.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(tmp);\n+\t\t\t\t\t\t}\n+\t\t\t\t\t}, this))\n+\t\t\t\t/*!\n+\t\t\t\t.on("mousedown.jstree touchstart.jstree", ".jstree-wholerow", function (e) {\n+\t\t\t\t\t\tif(e.target === e.currentTarget) {\n+\t\t\t\t\t\t\tvar a = $(e.currentTarget).closest(".jstree-node").children(".jstree-anchor");\n+\t\t\t\t\t\t\te.target = a[0];\n+\t\t\t\t\t\t\ta.trigger(e);\n+\t\t\t\t\t\t}\n+\t\t\t\t\t})\n+\t\t\t\t*/\n+\t\t\t\t.on("click.jstree", ".jstree-wholerow", function (e) {\n+\t\t\t\t\t\te.stopImmediatePropagation();\n+\t\t\t\t\t\tvar tmp = $.Event(\'click\', { metaKey : e.metaKey, ctrlKey : e.ctrlKey, altKey : e.altKey, shiftKey : e.shiftKey });\n+\t\t\t\t\t\t$(e.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(tmp).focus();\n+\t\t\t\t\t})\n+\t\t\t\t.on("dblclick.jstree", ".jstree-wholerow", function (e) {\n+\t\t\t\t\t\te.stopImmediatePropagation();\n+\t\t\t\t\t\tvar tmp = $.Event(\'dblclick\', { metaKey : e.metaKey, ctrlKey : e.ctrlKey, altKey : e.altKey, shiftKey : e.shiftKey });\n+\t\t\t\t\t\t$(e.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(tmp).focus();\n+\t\t\t\t\t})\n+\t\t\t\t.on("click.jstree", ".jstree-leaf > .jstree-ocl", $.proxy(function (e) {\n+\t\t\t\t\t\te.stopImmediatePropagation();\n+\t\t\t\t\t\tvar tmp = $.Event(\'click\', { metaKey : e.metaKey, ctrlKey : e.ctrlKey, altKey : e.altKey, shiftKey : e.shiftKey });\n+\t\t\t\t\t\t$(e.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(tmp).focus();\n+\t\t\t\t\t}, this))\n+\t\t\t\t.on("mouseover.jstree", ".jstree-wholerow, .jstree-icon", $.proxy(function (e) {\n+\t\t\t\t\t\te.stopImmediatePropagation();\n+\t\t\t\t\t\tif(!this.is_disabled(e.currentTarget)) {\n+\t\t\t\t\t\t\tthis.hover_node(e.currentTarget);\n+\t\t\t\t\t\t}\n+\t\t\t\t\t\treturn false;\n+\t\t\t\t\t}, this))\n+\t\t\t\t.on("mouseleave.jstree", ".jstree-node", $.proxy(function (e) {\n+\t\t\t\t\t\tthis.dehover_node(e.currentTarget);\n+\t\t\t\t\t}, this));\n+\t\t};\n+\t\tthis.teardown = function () {\n+\t\t\tif(this.settings.wholerow) {\n+\t\t\t\tthis.element.find(".jstree-wholerow").remove();\n+\t\t\t}\n+\t\t\tparent.teardown.call(this);\n+\t\t};\n+\t\tthis.redraw_node = function(obj, deep, callback, force_render) {\n+\t\t\tobj = parent.redraw_node.apply(this, arguments);\n+\t\t\tif(obj) {\n+\t\t\t\tvar tmp = div.cloneNode(true);\n+\t\t\t\t//tmp.style.height = this._data.core.li_height + \'px\';\n+\t\t\t\tif($.inArray(obj.id, this._data.core.selected) !== -1) { tmp.className += \' jstree-wholerow-clicked\'; }\n+\t\t\t\tif(this._data.core.focused && this._data.core.focused === obj.id) { tmp.className += \' jstree-wholerow-hovered\'; }\n+\t\t\t\tobj.insertBefore(tmp, obj.childNodes[0]);\n+\t\t\t}\n+\t\t\treturn obj;\n+\t\t};\n+\t};\n+\t// include the wholerow plugin by default\n+\t// $.jstree.defaults.plugins.push("wholerow");\n+\tif(document.registerElement && Object && Object.create) {\n+\t\tvar proto = Object.create(HTMLElement.prototype);\n+\t\tproto.createdCallback = function () {\n+\t\t\tvar c = { core : {}, plugins : [] }, i;\n+\t\t\tfor(i in $.jstree.plugins) {\n+\t\t\t\tif($.jstree.plugins.hasOwnProperty(i) && this.attributes[i]) {\n+\t\t\t\t\tc.plugins.push(i);\n+\t\t\t\t\tif(this.getAttribute(i) && JSON.parse(this.getAttribute(i))) {\n+\t\t\t\t\t\tc[i] = JSON.parse(this.getAttribute(i));\n+\t\t\t\t\t}\n+\t\t\t\t}\n+\t\t\t}\n+\t\t\tfor(i in $.jstree.defaults.core) {\n+\t\t\t\tif($.jstree.defaults.core.hasOwnProperty(i) && this.attributes[i]) {\n+\t\t\t\t\tc.core[i] = JSON.parse(this.getAttribute(i)) || this.getAttribute(i);\n+\t\t\t\t}\n+\t\t\t}\n+\t\t\t$(this).jstree(c);\n+\t\t};\n+\t\t// proto.attributeChangedCallback = function (name, previous, value) { };\n+\t\ttry {\n+\t\t\tdocument.registerElement("vakata-jstree", { prototype: proto });\n+\t\t} catch(ignore) { }\n+\t}\n+\n+}));\n\\ No newline at end of file\n'
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/dist/jstree.min.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vakata-jstree-3.3.5/dist/jstree.min.js Sun Dec 30 13:11:48 2018 -0500
[
b'@@ -0,0 +1,6 @@\n+/*! jsTree - v3.3.5 - 2018-01-02 - (MIT) */\n+!function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):"undefined"!=typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a,b){"use strict";if(!a.jstree){var c=0,d=!1,e=!1,f=!1,g=[],h=a("script:last").attr("src"),i=window.document;a.jstree={version:"3.3.5",defaults:{plugins:[]},plugins:{},path:h&&-1!==h.indexOf("/")?h.replace(/\\/[^\\/]+$/,""):"",idregex:/[\\\\:&!^|()\\[\\]<>@*\'+~#";.,=\\- \\/${}%?`]/g,root:"#"},a.jstree.create=function(b,d){var e=new a.jstree.core(++c),f=d;return d=a.extend(!0,{},a.jstree.defaults,d),f&&f.plugins&&(d.plugins=f.plugins),a.each(d.plugins,function(a,b){"core"!==a&&(e=e.plugin(b,d[b]))}),a(b).data("jstree",e),e.init(b,d),e},a.jstree.destroy=function(){a(".jstree:jstree").jstree("destroy"),a(i).off(".jstree")},a.jstree.core=function(a){this._id=a,this._cnt=0,this._wrk=null,this._data={core:{themes:{name:!1,dots:!1,icons:!1,ellipsis:!1},selected:[],last_error:{},working:!1,worker_queue:[],focused:null}}},a.jstree.reference=function(b){var c=null,d=null;if(!b||!b.id||b.tagName&&b.nodeType||(b=b.id),!d||!d.length)try{d=a(b)}catch(e){}if(!d||!d.length)try{d=a("#"+b.replace(a.jstree.idregex,"\\\\$&"))}catch(e){}return d&&d.length&&(d=d.closest(".jstree")).length&&(d=d.data("jstree"))?c=d:a(".jstree").each(function(){var d=a(this).data("jstree");return d&&d._model.data[b]?(c=d,!1):void 0}),c},a.fn.jstree=function(c){var d="string"==typeof c,e=Array.prototype.slice.call(arguments,1),f=null;return c!==!0||this.length?(this.each(function(){var g=a.jstree.reference(this),h=d&&g?g[c]:null;return f=d&&h?h.apply(g,e):null,g||d||c!==b&&!a.isPlainObject(c)||a.jstree.create(this,c),(g&&!d||c===!0)&&(f=g||!1),null!==f&&f!==b?!1:void 0}),null!==f&&f!==b?f:this):!1},a.expr.pseudos.jstree=a.expr.createPseudo(function(c){return function(c){return a(c).hasClass("jstree")&&a(c).data("jstree")!==b}}),a.jstree.defaults.core={data:!1,strings:!1,check_callback:!1,error:a.noop,animation:200,multiple:!0,themes:{name:!1,url:!1,dir:!1,dots:!0,icons:!0,ellipsis:!1,stripes:!1,variant:!1,responsive:!1},expand_selected_onload:!0,worker:!0,force_text:!1,dblclick_toggle:!0,loaded_state:!1,restore_focus:!0,keyboard:{"ctrl-space":function(b){b.type="click",a(b.currentTarget).trigger(b)},enter:function(b){b.type="click",a(b.currentTarget).trigger(b)},left:function(b){if(b.preventDefault(),this.is_open(b.currentTarget))this.close_node(b.currentTarget);else{var c=this.get_parent(b.currentTarget);c&&c.id!==a.jstree.root&&this.get_node(c,!0).children(".jstree-anchor").focus()}},up:function(a){a.preventDefault();var b=this.get_prev_dom(a.currentTarget);b&&b.length&&b.children(".jstree-anchor").focus()},right:function(b){if(b.preventDefault(),this.is_closed(b.currentTarget))this.open_node(b.currentTarget,function(a){this.get_node(a,!0).children(".jstree-anchor").focus()});else if(this.is_open(b.currentTarget)){var c=this.get_node(b.currentTarget,!0).children(".jstree-children")[0];c&&a(this._firstChild(c)).children(".jstree-anchor").focus()}},down:function(a){a.preventDefault();var b=this.get_next_dom(a.currentTarget);b&&b.length&&b.children(".jstree-anchor").focus()},"*":function(a){this.open_all()},home:function(b){b.preventDefault();var c=this._firstChild(this.get_container_ul()[0]);c&&a(c).children(".jstree-anchor").filter(":visible").focus()},end:function(a){a.preventDefault(),this.element.find(".jstree-anchor").filter(":visible").last().focus()},f2:function(a){a.preventDefault(),this.edit(a.currentTarget)}}},a.jstree.core.prototype={plugin:function(b,c){var d=a.jstree.plugins[b];return d?(this._data[b]={},d.prototype=this,new d(c,this)):this},init:function(b,c){this._model={data:{},changed:[],force_full_redraw:!1,redraw_timeout:!1,default_state:{loaded:!0,opened:!1,selected:!1,disabled:!1}},this._model.data[a.jstree.root]={id:a.jstree.root,parent:null,parents:[],children:[],children_d:[],state:{loaded:!1}},this.element=a(b)'..b'=r.toLowerCase()),p&&(r=r.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,""));e.text=j}return d.create_node.call(this,c,e,f,g,h)}};var n=i.createElement("DIV");if(n.setAttribute("unselectable","on"),n.setAttribute("role","presentation"),n.className="jstree-wholerow",n.innerHTML="&#160;",a.jstree.plugins.wholerow=function(b,c){this.bind=function(){c.bind.call(this),this.element.on("ready.jstree set_state.jstree",a.proxy(function(){this.hide_dots()},this)).on("init.jstree loading.jstree ready.jstree",a.proxy(function(){this.get_container_ul().addClass("jstree-wholerow-ul")},this)).on("deselect_all.jstree",a.proxy(function(a,b){this.element.find(".jstree-wholerow-clicked").removeClass("jstree-wholerow-clicked")},this)).on("changed.jstree",a.proxy(function(a,b){this.element.find(".jstree-wholerow-clicked").removeClass("jstree-wholerow-clicked");var c=!1,d,e;for(d=0,e=b.selected.length;e>d;d++)c=this.get_node(b.selected[d],!0),c&&c.length&&c.children(".jstree-wholerow").addClass("jstree-wholerow-clicked")},this)).on("open_node.jstree",a.proxy(function(a,b){this.get_node(b.node,!0).find(".jstree-clicked").parent().children(".jstree-wholerow").addClass("jstree-wholerow-clicked")},this)).on("hover_node.jstree dehover_node.jstree",a.proxy(function(a,b){"hover_node"===a.type&&this.is_disabled(b.node)||this.get_node(b.node,!0).children(".jstree-wholerow")["hover_node"===a.type?"addClass":"removeClass"]("jstree-wholerow-hovered")},this)).on("contextmenu.jstree",".jstree-wholerow",a.proxy(function(b){if(this._data.contextmenu){b.preventDefault();var c=a.Event("contextmenu",{metaKey:b.metaKey,ctrlKey:b.ctrlKey,altKey:b.altKey,shiftKey:b.shiftKey,pageX:b.pageX,pageY:b.pageY});a(b.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(c)}},this)).on("click.jstree",".jstree-wholerow",function(b){b.stopImmediatePropagation();var c=a.Event("click",{metaKey:b.metaKey,ctrlKey:b.ctrlKey,altKey:b.altKey,shiftKey:b.shiftKey});a(b.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(c).focus()}).on("dblclick.jstree",".jstree-wholerow",function(b){b.stopImmediatePropagation();var c=a.Event("dblclick",{metaKey:b.metaKey,ctrlKey:b.ctrlKey,altKey:b.altKey,shiftKey:b.shiftKey});a(b.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(c).focus()}).on("click.jstree",".jstree-leaf > .jstree-ocl",a.proxy(function(b){b.stopImmediatePropagation();var c=a.Event("click",{metaKey:b.metaKey,ctrlKey:b.ctrlKey,altKey:b.altKey,shiftKey:b.shiftKey});a(b.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(c).focus()},this)).on("mouseover.jstree",".jstree-wholerow, .jstree-icon",a.proxy(function(a){return a.stopImmediatePropagation(),this.is_disabled(a.currentTarget)||this.hover_node(a.currentTarget),!1},this)).on("mouseleave.jstree",".jstree-node",a.proxy(function(a){this.dehover_node(a.currentTarget)},this))},this.teardown=function(){this.settings.wholerow&&this.element.find(".jstree-wholerow").remove(),c.teardown.call(this)},this.redraw_node=function(b,d,e,f){if(b=c.redraw_node.apply(this,arguments)){var g=n.cloneNode(!0);-1!==a.inArray(b.id,this._data.core.selected)&&(g.className+=" jstree-wholerow-clicked"),this._data.core.focused&&this._data.core.focused===b.id&&(g.className+=" jstree-wholerow-hovered"),b.insertBefore(g,b.childNodes[0])}return b}},i.registerElement&&Object&&Object.create){var o=Object.create(HTMLElement.prototype);o.createdCallback=function(){var b={core:{},plugins:[]},c;for(c in a.jstree.plugins)a.jstree.plugins.hasOwnProperty(c)&&this.attributes[c]&&(b.plugins.push(c),this.getAttribute(c)&&JSON.parse(this.getAttribute(c))&&(b[c]=JSON.parse(this.getAttribute(c))));for(c in a.jstree.defaults.core)a.jstree.defaults.core.hasOwnProperty(c)&&this.attributes[c]&&(b.core[c]=JSON.parse(this.getAttribute(c))||this.getAttribute(c));a(this).jstree(b)};try{i.registerElement("vakata-jstree",{prototype:o})}catch(p){}}}});\n\\ No newline at end of file\n'
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/dist/themes/default-dark/32px.png
b
Binary file vakata-jstree-3.3.5/dist/themes/default-dark/32px.png has changed
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/dist/themes/default-dark/40px.png
b
Binary file vakata-jstree-3.3.5/dist/themes/default-dark/40px.png has changed
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/dist/themes/default-dark/style.css
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vakata-jstree-3.3.5/dist/themes/default-dark/style.css Sun Dec 30 13:11:48 2018 -0500
b
b'@@ -0,0 +1,1152 @@\n+/* jsTree default dark theme */\n+.jstree-node,\n+.jstree-children,\n+.jstree-container-ul {\n+  display: block;\n+  margin: 0;\n+  padding: 0;\n+  list-style-type: none;\n+  list-style-image: none;\n+}\n+.jstree-node {\n+  white-space: nowrap;\n+}\n+.jstree-anchor {\n+  display: inline-block;\n+  color: black;\n+  white-space: nowrap;\n+  padding: 0 4px 0 1px;\n+  margin: 0;\n+  vertical-align: top;\n+}\n+.jstree-anchor:focus {\n+  outline: 0;\n+}\n+.jstree-anchor,\n+.jstree-anchor:link,\n+.jstree-anchor:visited,\n+.jstree-anchor:hover,\n+.jstree-anchor:active {\n+  text-decoration: none;\n+  color: inherit;\n+}\n+.jstree-icon {\n+  display: inline-block;\n+  text-decoration: none;\n+  margin: 0;\n+  padding: 0;\n+  vertical-align: top;\n+  text-align: center;\n+}\n+.jstree-icon:empty {\n+  display: inline-block;\n+  text-decoration: none;\n+  margin: 0;\n+  padding: 0;\n+  vertical-align: top;\n+  text-align: center;\n+}\n+.jstree-ocl {\n+  cursor: pointer;\n+}\n+.jstree-leaf > .jstree-ocl {\n+  cursor: default;\n+}\n+.jstree .jstree-open > .jstree-children {\n+  display: block;\n+}\n+.jstree .jstree-closed > .jstree-children,\n+.jstree .jstree-leaf > .jstree-children {\n+  display: none;\n+}\n+.jstree-anchor > .jstree-themeicon {\n+  margin-right: 2px;\n+}\n+.jstree-no-icons .jstree-themeicon,\n+.jstree-anchor > .jstree-themeicon-hidden {\n+  display: none;\n+}\n+.jstree-hidden,\n+.jstree-node.jstree-hidden {\n+  display: none;\n+}\n+.jstree-rtl .jstree-anchor {\n+  padding: 0 1px 0 4px;\n+}\n+.jstree-rtl .jstree-anchor > .jstree-themeicon {\n+  margin-left: 2px;\n+  margin-right: 0;\n+}\n+.jstree-rtl .jstree-node {\n+  margin-left: 0;\n+}\n+.jstree-rtl .jstree-container-ul > .jstree-node {\n+  margin-right: 0;\n+}\n+.jstree-wholerow-ul {\n+  position: relative;\n+  display: inline-block;\n+  min-width: 100%;\n+}\n+.jstree-wholerow-ul .jstree-leaf > .jstree-ocl {\n+  cursor: pointer;\n+}\n+.jstree-wholerow-ul .jstree-anchor,\n+.jstree-wholerow-ul .jstree-icon {\n+  position: relative;\n+}\n+.jstree-wholerow-ul .jstree-wholerow {\n+  width: 100%;\n+  cursor: pointer;\n+  position: absolute;\n+  left: 0;\n+  -webkit-user-select: none;\n+  -moz-user-select: none;\n+  -ms-user-select: none;\n+  user-select: none;\n+}\n+.jstree-contextmenu .jstree-anchor {\n+  -webkit-user-select: none;\n+  /* disable selection/Copy of UIWebView */\n+  -webkit-touch-callout: none;\n+  /* disable the IOS popup when long-press on a link */\n+}\n+.vakata-context {\n+  display: none;\n+}\n+.vakata-context,\n+.vakata-context ul {\n+  margin: 0;\n+  padding: 2px;\n+  position: absolute;\n+  background: #f5f5f5;\n+  border: 1px solid #979797;\n+  box-shadow: 2px 2px 2px #999999;\n+}\n+.vakata-context ul {\n+  list-style: none;\n+  left: 100%;\n+  margin-top: -2.7em;\n+  margin-left: -4px;\n+}\n+.vakata-context .vakata-context-right ul {\n+  left: auto;\n+  right: 100%;\n+  margin-left: auto;\n+  margin-right: -4px;\n+}\n+.vakata-context li {\n+  list-style: none;\n+}\n+.vakata-context li > a {\n+  display: block;\n+  padding: 0 2em 0 2em;\n+  text-decoration: none;\n+  width: auto;\n+  color: black;\n+  white-space: nowrap;\n+  line-height: 2.4em;\n+  text-shadow: 1px 1px 0 white;\n+  border-radius: 1px;\n+}\n+.vakata-context li > a:hover {\n+  position: relative;\n+  background-color: #e8eff7;\n+  box-shadow: 0 0 2px #0a6aa1;\n+}\n+.vakata-context li > a.vakata-context-parent {\n+  background-image: url("data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAIORI4JlrqN1oMSnmmZDQUAOw==");\n+  background-position: right center;\n+  background-repeat: no-repeat;\n+}\n+.vakata-context li > a:focus {\n+  outline: 0;\n+}\n+.vakata-context .vakata-context-hover > a {\n+  position: relative;\n+  background-color: #e8eff7;\n+  box-shadow: 0 0 2px #0a6aa1;\n+}\n+.vakata-context .vakata-context-separator > a,\n+.vakata-context .vakata-context-separator > a:hover {\n+  background: white;\n+  border: 0;\n+  border-top: 1px solid #e2e3e3;\n+  height: 1px;\n+  min-height: 1px;\n+  max-height: 1px;\n+  padding: 0;\n+  margin: 0 0 0 2.4em;\n+  border-left: 1px solid #e0e0e0;\n+  text-shadow: 0 0 0 transpare'..b'}\n+  .jstree-default-dark-responsive .jstree-anchor {\n+    font-weight: bold;\n+    font-size: 1.1em;\n+    text-shadow: 1px 1px white;\n+  }\n+  .jstree-default-dark-responsive > .jstree-striped {\n+    background: transparent;\n+  }\n+  .jstree-default-dark-responsive .jstree-wholerow {\n+    border-top: 1px solid #666666;\n+    border-bottom: 1px solid #000000;\n+    background: #333333;\n+    height: 40px;\n+  }\n+  .jstree-default-dark-responsive .jstree-wholerow-hovered {\n+    background: #555555;\n+  }\n+  .jstree-default-dark-responsive .jstree-wholerow-clicked {\n+    background: #5fa2db;\n+  }\n+  .jstree-default-dark-responsive .jstree-children .jstree-last > .jstree-wholerow {\n+    box-shadow: inset 0 -6px 3px -5px #111111;\n+  }\n+  .jstree-default-dark-responsive .jstree-children .jstree-open > .jstree-wholerow {\n+    box-shadow: inset 0 6px 3px -5px #111111;\n+    border-top: 0;\n+  }\n+  .jstree-default-dark-responsive .jstree-children .jstree-open + .jstree-open {\n+    box-shadow: none;\n+  }\n+  .jstree-default-dark-responsive .jstree-node,\n+  .jstree-default-dark-responsive .jstree-icon,\n+  .jstree-default-dark-responsive .jstree-node > .jstree-ocl,\n+  .jstree-default-dark-responsive .jstree-themeicon,\n+  .jstree-default-dark-responsive .jstree-checkbox {\n+    background-image: url("40px.png");\n+    background-size: 120px 240px;\n+  }\n+  .jstree-default-dark-responsive .jstree-node {\n+    background-position: -80px 0;\n+    background-repeat: repeat-y;\n+  }\n+  .jstree-default-dark-responsive .jstree-last {\n+    background: transparent;\n+  }\n+  .jstree-default-dark-responsive .jstree-leaf > .jstree-ocl {\n+    background-position: -40px -120px;\n+  }\n+  .jstree-default-dark-responsive .jstree-last > .jstree-ocl {\n+    background-position: -40px -160px;\n+  }\n+  .jstree-default-dark-responsive .jstree-themeicon-custom {\n+    background-color: transparent;\n+    background-image: none;\n+    background-position: 0 0;\n+  }\n+  .jstree-default-dark-responsive .jstree-file {\n+    background: url("40px.png") 0 -160px no-repeat;\n+    background-size: 120px 240px;\n+  }\n+  .jstree-default-dark-responsive .jstree-folder {\n+    background: url("40px.png") -40px -40px no-repeat;\n+    background-size: 120px 240px;\n+  }\n+  .jstree-default-dark-responsive > .jstree-container-ul > .jstree-node {\n+    margin-left: 0;\n+    margin-right: 0;\n+  }\n+}\n+.jstree-default-dark {\n+  background: #333;\n+}\n+.jstree-default-dark .jstree-anchor {\n+  color: #999;\n+  text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.5);\n+}\n+.jstree-default-dark .jstree-clicked,\n+.jstree-default-dark .jstree-checked {\n+  color: white;\n+}\n+.jstree-default-dark .jstree-hovered {\n+  color: white;\n+}\n+#jstree-marker.jstree-default-dark {\n+  border-left-color: #999;\n+  background: transparent;\n+}\n+.jstree-default-dark .jstree-anchor > .jstree-icon {\n+  opacity: 0.75;\n+}\n+.jstree-default-dark .jstree-clicked > .jstree-icon,\n+.jstree-default-dark .jstree-hovered > .jstree-icon,\n+.jstree-default-dark .jstree-checked > .jstree-icon {\n+  opacity: 1;\n+}\n+.jstree-default-dark.jstree-rtl .jstree-node {\n+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAACZmZl+9SADAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==");\n+}\n+.jstree-default-dark.jstree-rtl .jstree-last {\n+  background: transparent;\n+}\n+.jstree-default-dark-small.jstree-rtl .jstree-node {\n+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAACAQMAAABv1h6PAAAABlBMVEUAAACZmZl+9SADAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMHBgAAiABBI4gz9AAAAABJRU5ErkJggg==");\n+}\n+.jstree-default-dark-small.jstree-rtl .jstree-last {\n+  background: transparent;\n+}\n+.jstree-default-dark-large.jstree-rtl .jstree-node {\n+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAACAQMAAAAD0EyKAAAABlBMVEUAAACZmZl+9SADAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjgIIGBgABCgCBvVLXcAAAAABJRU5ErkJggg==");\n+}\n+.jstree-default-dark-large.jstree-rtl .jstree-last {\n+  background: transparent;\n+}\n'
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/dist/themes/default-dark/style.min.css
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vakata-jstree-3.3.5/dist/themes/default-dark/style.min.css Sun Dec 30 13:11:48 2018 -0500
b
b'@@ -0,0 +1,1 @@\n+.jstree-node,.jstree-children,.jstree-container-ul{display:block;margin:0;padding:0;list-style-type:none;list-style-image:none}.jstree-node{white-space:nowrap}.jstree-anchor{display:inline-block;color:#000;white-space:nowrap;padding:0 4px 0 1px;margin:0;vertical-align:top}.jstree-anchor:focus{outline:0}.jstree-anchor,.jstree-anchor:link,.jstree-anchor:visited,.jstree-anchor:hover,.jstree-anchor:active{text-decoration:none;color:inherit}.jstree-icon{display:inline-block;text-decoration:none;margin:0;padding:0;vertical-align:top;text-align:center}.jstree-icon:empty{display:inline-block;text-decoration:none;margin:0;padding:0;vertical-align:top;text-align:center}.jstree-ocl{cursor:pointer}.jstree-leaf>.jstree-ocl{cursor:default}.jstree .jstree-open>.jstree-children{display:block}.jstree .jstree-closed>.jstree-children,.jstree .jstree-leaf>.jstree-children{display:none}.jstree-anchor>.jstree-themeicon{margin-right:2px}.jstree-no-icons .jstree-themeicon,.jstree-anchor>.jstree-themeicon-hidden{display:none}.jstree-hidden,.jstree-node.jstree-hidden{display:none}.jstree-rtl .jstree-anchor{padding:0 1px 0 4px}.jstree-rtl .jstree-anchor>.jstree-themeicon{margin-left:2px;margin-right:0}.jstree-rtl .jstree-node{margin-left:0}.jstree-rtl .jstree-container-ul>.jstree-node{margin-right:0}.jstree-wholerow-ul{position:relative;display:inline-block;min-width:100%}.jstree-wholerow-ul .jstree-leaf>.jstree-ocl{cursor:pointer}.jstree-wholerow-ul .jstree-anchor,.jstree-wholerow-ul .jstree-icon{position:relative}.jstree-wholerow-ul .jstree-wholerow{width:100%;cursor:pointer;position:absolute;left:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.jstree-contextmenu .jstree-anchor{-webkit-user-select:none;-webkit-touch-callout:none}.vakata-context{display:none}.vakata-context,.vakata-context ul{margin:0;padding:2px;position:absolute;background:#f5f5f5;border:1px solid #979797;box-shadow:2px 2px 2px #999}.vakata-context ul{list-style:none;left:100%;margin-top:-2.7em;margin-left:-4px}.vakata-context .vakata-context-right ul{left:auto;right:100%;margin-left:auto;margin-right:-4px}.vakata-context li{list-style:none}.vakata-context li>a{display:block;padding:0 2em;text-decoration:none;width:auto;color:#000;white-space:nowrap;line-height:2.4em;text-shadow:1px 1px 0 #fff;border-radius:1px}.vakata-context li>a:hover{position:relative;background-color:#e8eff7;box-shadow:0 0 2px #0a6aa1}.vakata-context li>a.vakata-context-parent{background-image:url(data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAIORI4JlrqN1oMSnmmZDQUAOw==);background-position:right center;background-repeat:no-repeat}.vakata-context li>a:focus{outline:0}.vakata-context .vakata-context-hover>a{position:relative;background-color:#e8eff7;box-shadow:0 0 2px #0a6aa1}.vakata-context .vakata-context-separator>a,.vakata-context .vakata-context-separator>a:hover{background:#fff;border:0;border-top:1px solid #e2e3e3;height:1px;min-height:1px;max-height:1px;padding:0;margin:0 0 0 2.4em;border-left:1px solid #e0e0e0;text-shadow:0 0 0 transparent;box-shadow:0 0 0 transparent;border-radius:0}.vakata-context .vakata-contextmenu-disabled a,.vakata-context .vakata-contextmenu-disabled a:hover{color:silver;background-color:transparent;border:0;box-shadow:0 0 0}.vakata-context li>a>i{text-decoration:none;display:inline-block;width:2.4em;height:2.4em;background:0 0;margin:0 0 0 -2em;vertical-align:top;text-align:center;line-height:2.4em}.vakata-context li>a>i:empty{width:2.4em;line-height:2.4em}.vakata-context li>a .vakata-contextmenu-sep{display:inline-block;width:1px;height:2.4em;background:#fff;margin:0 .5em 0 0;border-left:1px solid #e2e3e3}.vakata-context .vakata-contextmenu-shortcut{font-size:.8em;color:silver;opacity:.5;display:none}.vakata-context-rtl ul{left:auto;right:100%;margin-left:auto;margin-right:-4px}.vakata-context-rtl li>a.vakata-context-parent{background-image:url(data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAE'..b'dark-responsive .jstree-checkbox,.jstree-default-dark-responsive .jstree-checkbox:hover{background-position:-40px -80px}.jstree-default-dark-responsive.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default-dark-responsive.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default-dark-responsive .jstree-checked>.jstree-checkbox,.jstree-default-dark-responsive .jstree-checked>.jstree-checkbox:hover{background-position:0 -80px}.jstree-default-dark-responsive .jstree-anchor>.jstree-undetermined,.jstree-default-dark-responsive .jstree-anchor>.jstree-undetermined:hover{background-position:0 -120px}.jstree-default-dark-responsive .jstree-anchor{font-weight:700;font-size:1.1em;text-shadow:1px 1px #fff}.jstree-default-dark-responsive>.jstree-striped{background:0 0}.jstree-default-dark-responsive .jstree-wholerow{border-top:1px solid #666;border-bottom:1px solid #000;background:#333;height:40px}.jstree-default-dark-responsive .jstree-wholerow-hovered{background:#555}.jstree-default-dark-responsive .jstree-wholerow-clicked{background:#5fa2db}.jstree-default-dark-responsive .jstree-children .jstree-last>.jstree-wholerow{box-shadow:inset 0 -6px 3px -5px #111}.jstree-default-dark-responsive .jstree-children .jstree-open>.jstree-wholerow{box-shadow:inset 0 6px 3px -5px #111;border-top:0}.jstree-default-dark-responsive .jstree-children .jstree-open+.jstree-open{box-shadow:none}.jstree-default-dark-responsive .jstree-node,.jstree-default-dark-responsive .jstree-icon,.jstree-default-dark-responsive .jstree-node>.jstree-ocl,.jstree-default-dark-responsive .jstree-themeicon,.jstree-default-dark-responsive .jstree-checkbox{background-image:url(40px.png);background-size:120px 240px}.jstree-default-dark-responsive .jstree-node{background-position:-80px 0;background-repeat:repeat-y}.jstree-default-dark-responsive .jstree-last{background:0 0}.jstree-default-dark-responsive .jstree-leaf>.jstree-ocl{background-position:-40px -120px}.jstree-default-dark-responsive .jstree-last>.jstree-ocl{background-position:-40px -160px}.jstree-default-dark-responsive .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default-dark-responsive .jstree-file{background:url(40px.png) 0 -160px no-repeat;background-size:120px 240px}.jstree-default-dark-responsive .jstree-folder{background:url(40px.png) -40px -40px no-repeat;background-size:120px 240px}.jstree-default-dark-responsive>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}}.jstree-default-dark{background:#333}.jstree-default-dark .jstree-anchor{color:#999;text-shadow:1px 1px 0 rgba(0,0,0,.5)}.jstree-default-dark .jstree-clicked,.jstree-default-dark .jstree-checked{color:#fff}.jstree-default-dark .jstree-hovered{color:#fff}#jstree-marker.jstree-default-dark{border-left-color:#999;background:0 0}.jstree-default-dark .jstree-anchor>.jstree-icon{opacity:.75}.jstree-default-dark .jstree-clicked>.jstree-icon,.jstree-default-dark .jstree-hovered>.jstree-icon,.jstree-default-dark .jstree-checked>.jstree-icon{opacity:1}.jstree-default-dark.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAACZmZl+9SADAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==)}.jstree-default-dark.jstree-rtl .jstree-last{background:0 0}.jstree-default-dark-small.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAACAQMAAABv1h6PAAAABlBMVEUAAACZmZl+9SADAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMHBgAAiABBI4gz9AAAAABJRU5ErkJggg==)}.jstree-default-dark-small.jstree-rtl .jstree-last{background:0 0}.jstree-default-dark-large.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAACAQMAAAAD0EyKAAAABlBMVEUAAACZmZl+9SADAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjgIIGBgABCgCBvVLXcAAAAABJRU5ErkJggg==)}.jstree-default-dark-large.jstree-rtl .jstree-last{background:0 0}\n\\ No newline at end of file\n'
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/dist/themes/default-dark/throbber.gif
b
Binary file vakata-jstree-3.3.5/dist/themes/default-dark/throbber.gif has changed
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/dist/themes/default/32px.png
b
Binary file vakata-jstree-3.3.5/dist/themes/default/32px.png has changed
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/dist/themes/default/40px.png
b
Binary file vakata-jstree-3.3.5/dist/themes/default/40px.png has changed
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/dist/themes/default/style.css
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vakata-jstree-3.3.5/dist/themes/default/style.css Sun Dec 30 13:11:48 2018 -0500
b
b'@@ -0,0 +1,1108 @@\n+/* jsTree default theme */\n+.jstree-node,\n+.jstree-children,\n+.jstree-container-ul {\n+  display: block;\n+  margin: 0;\n+  padding: 0;\n+  list-style-type: none;\n+  list-style-image: none;\n+}\n+.jstree-node {\n+  white-space: nowrap;\n+}\n+.jstree-anchor {\n+  display: inline-block;\n+  color: black;\n+  white-space: nowrap;\n+  padding: 0 4px 0 1px;\n+  margin: 0;\n+  vertical-align: top;\n+}\n+.jstree-anchor:focus {\n+  outline: 0;\n+}\n+.jstree-anchor,\n+.jstree-anchor:link,\n+.jstree-anchor:visited,\n+.jstree-anchor:hover,\n+.jstree-anchor:active {\n+  text-decoration: none;\n+  color: inherit;\n+}\n+.jstree-icon {\n+  display: inline-block;\n+  text-decoration: none;\n+  margin: 0;\n+  padding: 0;\n+  vertical-align: top;\n+  text-align: center;\n+}\n+.jstree-icon:empty {\n+  display: inline-block;\n+  text-decoration: none;\n+  margin: 0;\n+  padding: 0;\n+  vertical-align: top;\n+  text-align: center;\n+}\n+.jstree-ocl {\n+  cursor: pointer;\n+}\n+.jstree-leaf > .jstree-ocl {\n+  cursor: default;\n+}\n+.jstree .jstree-open > .jstree-children {\n+  display: block;\n+}\n+.jstree .jstree-closed > .jstree-children,\n+.jstree .jstree-leaf > .jstree-children {\n+  display: none;\n+}\n+.jstree-anchor > .jstree-themeicon {\n+  margin-right: 2px;\n+}\n+.jstree-no-icons .jstree-themeicon,\n+.jstree-anchor > .jstree-themeicon-hidden {\n+  display: none;\n+}\n+.jstree-hidden,\n+.jstree-node.jstree-hidden {\n+  display: none;\n+}\n+.jstree-rtl .jstree-anchor {\n+  padding: 0 1px 0 4px;\n+}\n+.jstree-rtl .jstree-anchor > .jstree-themeicon {\n+  margin-left: 2px;\n+  margin-right: 0;\n+}\n+.jstree-rtl .jstree-node {\n+  margin-left: 0;\n+}\n+.jstree-rtl .jstree-container-ul > .jstree-node {\n+  margin-right: 0;\n+}\n+.jstree-wholerow-ul {\n+  position: relative;\n+  display: inline-block;\n+  min-width: 100%;\n+}\n+.jstree-wholerow-ul .jstree-leaf > .jstree-ocl {\n+  cursor: pointer;\n+}\n+.jstree-wholerow-ul .jstree-anchor,\n+.jstree-wholerow-ul .jstree-icon {\n+  position: relative;\n+}\n+.jstree-wholerow-ul .jstree-wholerow {\n+  width: 100%;\n+  cursor: pointer;\n+  position: absolute;\n+  left: 0;\n+  -webkit-user-select: none;\n+  -moz-user-select: none;\n+  -ms-user-select: none;\n+  user-select: none;\n+}\n+.jstree-contextmenu .jstree-anchor {\n+  -webkit-user-select: none;\n+  /* disable selection/Copy of UIWebView */\n+  -webkit-touch-callout: none;\n+  /* disable the IOS popup when long-press on a link */\n+}\n+.vakata-context {\n+  display: none;\n+}\n+.vakata-context,\n+.vakata-context ul {\n+  margin: 0;\n+  padding: 2px;\n+  position: absolute;\n+  background: #f5f5f5;\n+  border: 1px solid #979797;\n+  box-shadow: 2px 2px 2px #999999;\n+}\n+.vakata-context ul {\n+  list-style: none;\n+  left: 100%;\n+  margin-top: -2.7em;\n+  margin-left: -4px;\n+}\n+.vakata-context .vakata-context-right ul {\n+  left: auto;\n+  right: 100%;\n+  margin-left: auto;\n+  margin-right: -4px;\n+}\n+.vakata-context li {\n+  list-style: none;\n+}\n+.vakata-context li > a {\n+  display: block;\n+  padding: 0 2em 0 2em;\n+  text-decoration: none;\n+  width: auto;\n+  color: black;\n+  white-space: nowrap;\n+  line-height: 2.4em;\n+  text-shadow: 1px 1px 0 white;\n+  border-radius: 1px;\n+}\n+.vakata-context li > a:hover {\n+  position: relative;\n+  background-color: #e8eff7;\n+  box-shadow: 0 0 2px #0a6aa1;\n+}\n+.vakata-context li > a.vakata-context-parent {\n+  background-image: url("data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAIORI4JlrqN1oMSnmmZDQUAOw==");\n+  background-position: right center;\n+  background-repeat: no-repeat;\n+}\n+.vakata-context li > a:focus {\n+  outline: 0;\n+}\n+.vakata-context .vakata-context-hover > a {\n+  position: relative;\n+  background-color: #e8eff7;\n+  box-shadow: 0 0 2px #0a6aa1;\n+}\n+.vakata-context .vakata-context-separator > a,\n+.vakata-context .vakata-context-separator > a:hover {\n+  background: white;\n+  border: 0;\n+  border-top: 1px solid #e2e3e3;\n+  height: 1px;\n+  min-height: 1px;\n+  max-height: 1px;\n+  padding: 0;\n+  margin: 0 0 0 2.4em;\n+  border-left: 1px solid #e0e0e0;\n+  text-shadow: 0 0 0 transparent;\n+'..b'-default-responsive.jstree-rtl .jstree-node {\n+    margin-left: 0;\n+    margin-right: 40px;\n+    background: transparent;\n+  }\n+  .jstree-default-responsive.jstree-rtl .jstree-container-ul > .jstree-node {\n+    margin-right: 0;\n+  }\n+  .jstree-default-responsive .jstree-ocl,\n+  .jstree-default-responsive .jstree-themeicon,\n+  .jstree-default-responsive .jstree-checkbox {\n+    background-size: 120px 240px;\n+  }\n+  .jstree-default-responsive .jstree-leaf > .jstree-ocl,\n+  .jstree-default-responsive.jstree-rtl .jstree-leaf > .jstree-ocl {\n+    background: transparent;\n+  }\n+  .jstree-default-responsive .jstree-open > .jstree-ocl {\n+    background-position: 0 0px !important;\n+  }\n+  .jstree-default-responsive .jstree-closed > .jstree-ocl {\n+    background-position: 0 -40px !important;\n+  }\n+  .jstree-default-responsive.jstree-rtl .jstree-closed > .jstree-ocl {\n+    background-position: -40px 0px !important;\n+  }\n+  .jstree-default-responsive .jstree-themeicon {\n+    background-position: -40px -40px;\n+  }\n+  .jstree-default-responsive .jstree-checkbox,\n+  .jstree-default-responsive .jstree-checkbox:hover {\n+    background-position: -40px -80px;\n+  }\n+  .jstree-default-responsive.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox,\n+  .jstree-default-responsive.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox:hover,\n+  .jstree-default-responsive .jstree-checked > .jstree-checkbox,\n+  .jstree-default-responsive .jstree-checked > .jstree-checkbox:hover {\n+    background-position: 0 -80px;\n+  }\n+  .jstree-default-responsive .jstree-anchor > .jstree-undetermined,\n+  .jstree-default-responsive .jstree-anchor > .jstree-undetermined:hover {\n+    background-position: 0 -120px;\n+  }\n+  .jstree-default-responsive .jstree-anchor {\n+    font-weight: bold;\n+    font-size: 1.1em;\n+    text-shadow: 1px 1px white;\n+  }\n+  .jstree-default-responsive > .jstree-striped {\n+    background: transparent;\n+  }\n+  .jstree-default-responsive .jstree-wholerow {\n+    border-top: 1px solid rgba(255, 255, 255, 0.7);\n+    border-bottom: 1px solid rgba(64, 64, 64, 0.2);\n+    background: #ebebeb;\n+    height: 40px;\n+  }\n+  .jstree-default-responsive .jstree-wholerow-hovered {\n+    background: #e7f4f9;\n+  }\n+  .jstree-default-responsive .jstree-wholerow-clicked {\n+    background: #beebff;\n+  }\n+  .jstree-default-responsive .jstree-children .jstree-last > .jstree-wholerow {\n+    box-shadow: inset 0 -6px 3px -5px #666666;\n+  }\n+  .jstree-default-responsive .jstree-children .jstree-open > .jstree-wholerow {\n+    box-shadow: inset 0 6px 3px -5px #666666;\n+    border-top: 0;\n+  }\n+  .jstree-default-responsive .jstree-children .jstree-open + .jstree-open {\n+    box-shadow: none;\n+  }\n+  .jstree-default-responsive .jstree-node,\n+  .jstree-default-responsive .jstree-icon,\n+  .jstree-default-responsive .jstree-node > .jstree-ocl,\n+  .jstree-default-responsive .jstree-themeicon,\n+  .jstree-default-responsive .jstree-checkbox {\n+    background-image: url("40px.png");\n+    background-size: 120px 240px;\n+  }\n+  .jstree-default-responsive .jstree-node {\n+    background-position: -80px 0;\n+    background-repeat: repeat-y;\n+  }\n+  .jstree-default-responsive .jstree-last {\n+    background: transparent;\n+  }\n+  .jstree-default-responsive .jstree-leaf > .jstree-ocl {\n+    background-position: -40px -120px;\n+  }\n+  .jstree-default-responsive .jstree-last > .jstree-ocl {\n+    background-position: -40px -160px;\n+  }\n+  .jstree-default-responsive .jstree-themeicon-custom {\n+    background-color: transparent;\n+    background-image: none;\n+    background-position: 0 0;\n+  }\n+  .jstree-default-responsive .jstree-file {\n+    background: url("40px.png") 0 -160px no-repeat;\n+    background-size: 120px 240px;\n+  }\n+  .jstree-default-responsive .jstree-folder {\n+    background: url("40px.png") -40px -40px no-repeat;\n+    background-size: 120px 240px;\n+  }\n+  .jstree-default-responsive > .jstree-container-ul > .jstree-node {\n+    margin-left: 0;\n+    margin-right: 0;\n+  }\n+}\n'
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/dist/themes/default/style.min.css
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vakata-jstree-3.3.5/dist/themes/default/style.min.css Sun Dec 30 13:11:48 2018 -0500
b
b'@@ -0,0 +1,1 @@\n+.jstree-node,.jstree-children,.jstree-container-ul{display:block;margin:0;padding:0;list-style-type:none;list-style-image:none}.jstree-node{white-space:nowrap}.jstree-anchor{display:inline-block;color:#000;white-space:nowrap;padding:0 4px 0 1px;margin:0;vertical-align:top}.jstree-anchor:focus{outline:0}.jstree-anchor,.jstree-anchor:link,.jstree-anchor:visited,.jstree-anchor:hover,.jstree-anchor:active{text-decoration:none;color:inherit}.jstree-icon{display:inline-block;text-decoration:none;margin:0;padding:0;vertical-align:top;text-align:center}.jstree-icon:empty{display:inline-block;text-decoration:none;margin:0;padding:0;vertical-align:top;text-align:center}.jstree-ocl{cursor:pointer}.jstree-leaf>.jstree-ocl{cursor:default}.jstree .jstree-open>.jstree-children{display:block}.jstree .jstree-closed>.jstree-children,.jstree .jstree-leaf>.jstree-children{display:none}.jstree-anchor>.jstree-themeicon{margin-right:2px}.jstree-no-icons .jstree-themeicon,.jstree-anchor>.jstree-themeicon-hidden{display:none}.jstree-hidden,.jstree-node.jstree-hidden{display:none}.jstree-rtl .jstree-anchor{padding:0 1px 0 4px}.jstree-rtl .jstree-anchor>.jstree-themeicon{margin-left:2px;margin-right:0}.jstree-rtl .jstree-node{margin-left:0}.jstree-rtl .jstree-container-ul>.jstree-node{margin-right:0}.jstree-wholerow-ul{position:relative;display:inline-block;min-width:100%}.jstree-wholerow-ul .jstree-leaf>.jstree-ocl{cursor:pointer}.jstree-wholerow-ul .jstree-anchor,.jstree-wholerow-ul .jstree-icon{position:relative}.jstree-wholerow-ul .jstree-wholerow{width:100%;cursor:pointer;position:absolute;left:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.jstree-contextmenu .jstree-anchor{-webkit-user-select:none;-webkit-touch-callout:none}.vakata-context{display:none}.vakata-context,.vakata-context ul{margin:0;padding:2px;position:absolute;background:#f5f5f5;border:1px solid #979797;box-shadow:2px 2px 2px #999}.vakata-context ul{list-style:none;left:100%;margin-top:-2.7em;margin-left:-4px}.vakata-context .vakata-context-right ul{left:auto;right:100%;margin-left:auto;margin-right:-4px}.vakata-context li{list-style:none}.vakata-context li>a{display:block;padding:0 2em;text-decoration:none;width:auto;color:#000;white-space:nowrap;line-height:2.4em;text-shadow:1px 1px 0 #fff;border-radius:1px}.vakata-context li>a:hover{position:relative;background-color:#e8eff7;box-shadow:0 0 2px #0a6aa1}.vakata-context li>a.vakata-context-parent{background-image:url(data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAIORI4JlrqN1oMSnmmZDQUAOw==);background-position:right center;background-repeat:no-repeat}.vakata-context li>a:focus{outline:0}.vakata-context .vakata-context-hover>a{position:relative;background-color:#e8eff7;box-shadow:0 0 2px #0a6aa1}.vakata-context .vakata-context-separator>a,.vakata-context .vakata-context-separator>a:hover{background:#fff;border:0;border-top:1px solid #e2e3e3;height:1px;min-height:1px;max-height:1px;padding:0;margin:0 0 0 2.4em;border-left:1px solid #e0e0e0;text-shadow:0 0 0 transparent;box-shadow:0 0 0 transparent;border-radius:0}.vakata-context .vakata-contextmenu-disabled a,.vakata-context .vakata-contextmenu-disabled a:hover{color:silver;background-color:transparent;border:0;box-shadow:0 0 0}.vakata-context li>a>i{text-decoration:none;display:inline-block;width:2.4em;height:2.4em;background:0 0;margin:0 0 0 -2em;vertical-align:top;text-align:center;line-height:2.4em}.vakata-context li>a>i:empty{width:2.4em;line-height:2.4em}.vakata-context li>a .vakata-contextmenu-sep{display:inline-block;width:1px;height:2.4em;background:#fff;margin:0 .5em 0 0;border-left:1px solid #e2e3e3}.vakata-context .vakata-contextmenu-shortcut{font-size:.8em;color:silver;opacity:.5;display:none}.vakata-context-rtl ul{left:auto;right:100%;margin-left:auto;margin-right:-4px}.vakata-context-rtl li>a.vakata-context-parent{background-image:url(data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAE'..b'ponsive{border-left-width:10px;border-top-width:10px;border-bottom-width:10px;margin-top:-10px}}@media (max-width:768px){.jstree-default-responsive .jstree-icon{background-image:url(40px.png)}.jstree-default-responsive .jstree-node,.jstree-default-responsive .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-responsive .jstree-node{min-height:40px;line-height:40px;margin-left:40px;min-width:40px;white-space:nowrap}.jstree-default-responsive .jstree-anchor{line-height:40px;height:40px}.jstree-default-responsive .jstree-icon,.jstree-default-responsive .jstree-icon:empty{width:40px;height:40px;line-height:40px}.jstree-default-responsive>.jstree-container-ul>.jstree-node{margin-left:0}.jstree-default-responsive.jstree-rtl .jstree-node{margin-left:0;margin-right:40px;background:0 0}.jstree-default-responsive.jstree-rtl .jstree-container-ul>.jstree-node{margin-right:0}.jstree-default-responsive .jstree-ocl,.jstree-default-responsive .jstree-themeicon,.jstree-default-responsive .jstree-checkbox{background-size:120px 240px}.jstree-default-responsive .jstree-leaf>.jstree-ocl,.jstree-default-responsive.jstree-rtl .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-responsive .jstree-open>.jstree-ocl{background-position:0 0!important}.jstree-default-responsive .jstree-closed>.jstree-ocl{background-position:0 -40px!important}.jstree-default-responsive.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-40px 0!important}.jstree-default-responsive .jstree-themeicon{background-position:-40px -40px}.jstree-default-responsive .jstree-checkbox,.jstree-default-responsive .jstree-checkbox:hover{background-position:-40px -80px}.jstree-default-responsive.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default-responsive.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default-responsive .jstree-checked>.jstree-checkbox,.jstree-default-responsive .jstree-checked>.jstree-checkbox:hover{background-position:0 -80px}.jstree-default-responsive .jstree-anchor>.jstree-undetermined,.jstree-default-responsive .jstree-anchor>.jstree-undetermined:hover{background-position:0 -120px}.jstree-default-responsive .jstree-anchor{font-weight:700;font-size:1.1em;text-shadow:1px 1px #fff}.jstree-default-responsive>.jstree-striped{background:0 0}.jstree-default-responsive .jstree-wholerow{border-top:1px solid rgba(255,255,255,.7);border-bottom:1px solid rgba(64,64,64,.2);background:#ebebeb;height:40px}.jstree-default-responsive .jstree-wholerow-hovered{background:#e7f4f9}.jstree-default-responsive .jstree-wholerow-clicked{background:#beebff}.jstree-default-responsive .jstree-children .jstree-last>.jstree-wholerow{box-shadow:inset 0 -6px 3px -5px #666}.jstree-default-responsive .jstree-children .jstree-open>.jstree-wholerow{box-shadow:inset 0 6px 3px -5px #666;border-top:0}.jstree-default-responsive .jstree-children .jstree-open+.jstree-open{box-shadow:none}.jstree-default-responsive .jstree-node,.jstree-default-responsive .jstree-icon,.jstree-default-responsive .jstree-node>.jstree-ocl,.jstree-default-responsive .jstree-themeicon,.jstree-default-responsive .jstree-checkbox{background-image:url(40px.png);background-size:120px 240px}.jstree-default-responsive .jstree-node{background-position:-80px 0;background-repeat:repeat-y}.jstree-default-responsive .jstree-last{background:0 0}.jstree-default-responsive .jstree-leaf>.jstree-ocl{background-position:-40px -120px}.jstree-default-responsive .jstree-last>.jstree-ocl{background-position:-40px -160px}.jstree-default-responsive .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default-responsive .jstree-file{background:url(40px.png) 0 -160px no-repeat;background-size:120px 240px}.jstree-default-responsive .jstree-folder{background:url(40px.png) -40px -40px no-repeat;background-size:120px 240px}.jstree-default-responsive>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}}\n\\ No newline at end of file\n'
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/dist/themes/default/throbber.gif
b
Binary file vakata-jstree-3.3.5/dist/themes/default/throbber.gif has changed
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/gruntfile.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vakata-jstree-3.3.5/gruntfile.js Sun Dec 30 13:11:48 2018 -0500
[
@@ -0,0 +1,241 @@
+/*global module:false, require:false, __dirname:false*/
+
+module.exports = function(grunt) {
+  grunt.util.linefeed = "\n";
+
+  // Project configuration.
+  grunt.initConfig({
+    pkg: grunt.file.readJSON('package.json'),
+    concat: {
+      options : {
+        separator : "\n"
+      },
+      dist: {
+        src: ['src/<%= pkg.name %>.js', 'src/<%= pkg.name %>.*.js', 'src/vakata-jstree.js'],
+        dest: 'dist/<%= pkg.name %>.js'
+      }
+    },
+    copy: {
+      libs : {
+        files : [
+          { expand: true, cwd : 'libs/', src: ['*'], dest: 'dist/libs/' }
+        ]
+      },
+      docs : {
+        files : [
+          { expand: true, cwd : 'dist/', src: ['**/*'], dest: 'docs/assets/dist/' }
+        ]
+      }
+    },
+    uglify: {
+      options: {
+        banner: '/*! <%= pkg.title || pkg.name %> - v<%= pkg.version %> - <%= grunt.template.today("yyyy-mm-dd") %> - (<%= _.pluck(pkg.licenses, "type").join(", ") %>) */\n',
+        preserveComments: false,
+        //sourceMap: "dist/jstree.min.map",
+        //sourceMappingURL: "jstree.min.map",
+        report: "min",
+        beautify: {
+                ascii_only: true
+        },
+        compress: {
+                hoist_funs: false,
+                loops: false,
+                unused: false
+        }
+      },
+      dist: {
+        src: ['<%= concat.dist.dest %>'],
+        dest: 'dist/<%= pkg.name %>.min.js'
+      }
+    },
+    qunit: {
+      files: ['test/unit/**/*.html']
+    },
+    jshint: {
+      options: {
+        'curly' : true,
+        'eqeqeq' : true,
+        'latedef' : true,
+        'newcap' : true,
+        'noarg' : true,
+        'sub' : true,
+        'undef' : true,
+        'boss' : true,
+        'eqnull' : true,
+        'browser' : true,
+        'trailing' : true,
+        'globals' : {
+          'console' : true,
+          'jQuery' : true,
+          'browser' : true,
+          'XSLTProcessor' : true,
+          'ActiveXObject' : true
+        }
+      },
+      beforeconcat: ['src/<%= pkg.name %>.js', 'src/<%= pkg.name %>.*.js'],
+      afterconcat: ['dist/<%= pkg.name %>.js']
+    },
+    dox: {
+      files: {
+        src: ['src/*.js'],
+        dest: 'docs'
+      }
+    },
+    amd : {
+      files: {
+        src: ['dist/jstree.js'],
+        dest: 'dist/jstree.js'
+      }
+    },
+    less: {
+      production: {
+        options : {
+          cleancss : true,
+          compress : true
+        },
+        files: {
+          "dist/themes/default/style.min.css" : "src/themes/default/style.less",
+          "dist/themes/default-dark/style.min.css" : "src/themes/default-dark/style.less"
+        }
+      },
+      development: {
+        files: {
+          "src/themes/default/style.css" : "src/themes/default/style.less",
+          "dist/themes/default/style.css" : "src/themes/default/style.less",
+          "src/themes/default-dark/style.css" : "src/themes/default-dark/style.less",
+          "dist/themes/default-dark/style.css" : "src/themes/default-dark/style.less"
+        }
+      }
+    },
+    watch: {
+      js : {
+        files: ['src/**/*.js'],
+        tasks: ['js'],
+        options : {
+          atBegin : true
+        }
+      },
+      css : {
+        files: ['src/**/*.less','src/**/*.png','src/**/*.gif'],
+        tasks: ['css'],
+        options : {
+          atBegin : true
+        }
+      },
+    },
+    resemble: {
+      options: {
+        screenshotRoot: 'test/visual/screenshots/',
+        url: 'http://127.0.0.1/jstree/test/visual/',
+        gm: false
+      },
+      desktop: {
+        options: {
+          width: 1280,
+        },
+        src: ['desktop'],
+        dest: 'desktop',
+      },
+      mobile: {
+        options: {
+          width: 360,
+        },
+        src: ['mobile'],
+        dest: 'mobile'
+      }
+    },
+    imagemin: {
+      dynamic: {
+        options: {                       // Target options
+          optimizationLevel: 7,
+          pngquant : true
+        },
+        files: [{
+          expand: true,                  // Enable dynamic expansion
+          cwd:  'src/themes/default/',    // Src matches are relative to this path
+          src: ['**/*.{png,jpg,gif}'],   // Actual patterns to match
+          dest: 'dist/themes/default/'   // Destination path prefix
+        },{
+          expand: true,                  // Enable dynamic expansion
+          cwd:  'src/themes/default-dark/',    // Src matches are relative to this path
+          src: ['**/*.{png,jpg,gif}'],   // Actual patterns to match
+          dest: 'dist/themes/default-dark/'   // Destination path prefix
+        }]
+      }
+    },
+    replace: {
+      files: {
+        src: ['dist/*.js', 'bower.json', 'component.json', 'jstree.jquery.json'],
+        overwrite: true,
+        replacements: [
+          {
+            from: '{{VERSION}}',
+            to: "<%= pkg.version %>"
+          },
+          {
+            from: /"version": "[^"]+"/g,
+            to: "\"version\": \"<%= pkg.version %>\""
+          },
+        ]
+      }
+    }
+  });
+
+  grunt.loadNpmTasks('grunt-contrib-jshint');
+  grunt.loadNpmTasks('grunt-contrib-concat');
+  grunt.loadNpmTasks('grunt-contrib-copy');
+  grunt.loadNpmTasks('grunt-contrib-uglify');
+  grunt.loadNpmTasks('grunt-contrib-less');
+  grunt.loadNpmTasks('grunt-contrib-qunit');
+  grunt.loadNpmTasks('grunt-resemble-cli');
+  grunt.loadNpmTasks('grunt-contrib-watch');
+  grunt.loadNpmTasks('grunt-contrib-imagemin');
+  grunt.loadNpmTasks('grunt-text-replace');
+
+  grunt.registerMultiTask('amd', 'Clean up AMD', function () {
+    var s, d;
+    this.files.forEach(function (f) {
+      s = f.src;
+      d = f.dest;
+    });
+    grunt.file.copy(s, d, {
+      process: function (contents) {
+        contents = contents.replace(/\s*if\(\$\.jstree\.plugins\.[a-z]+\)\s*\{\s*return;\s*\}/ig, '');
+        contents = contents.replace(/\/\*globals[^\/]+\//ig, '');
+        //contents = contents.replace(/\(function \(factory[\s\S]*?undefined/mig, '(function ($, undefined');
+        //contents = contents.replace(/\}\)\);/g, '}(jQuery));');
+        contents = contents.replace(/\(function \(factory[\s\S]*?undefined\s*\)[^\n]+/mig, '');
+        contents = contents.replace(/\}\)\);/g, '');
+        contents = contents.replace(/\s*("|')use strict("|');/g, '');
+        contents = contents.replace(/\s*return \$\.fn\.jstree;/g, '');
+        return grunt.file.read('src/intro.js') + contents + grunt.file.read('src/outro.js');
+      }
+    });
+  });
+
+  grunt.registerMultiTask('dox', 'Generate dox output ', function() {
+    var exec = require('child_process').exec,
+        path = require('path'),
+        done = this.async(),
+        doxPath = path.resolve(__dirname),
+        formatter = [doxPath, 'node_modules', '.bin', 'dox'].join(path.sep);
+    exec(formatter + ' < "dist/jstree.js" > "docs/jstree.json"', {maxBuffer: 5000*1024}, function(error, stout, sterr){
+      if (error) {
+        grunt.log.error(formatter);
+        grunt.log.error("WARN: "+ error);
+      }
+      if (!error) {
+        grunt.log.writeln('dist/jstree.js doxxed.');
+        done();
+      }
+    });
+  });
+
+  grunt.util.linefeed = "\n";
+  
+  // Default task.
+  grunt.registerTask('default', ['jshint:beforeconcat','concat','amd','jshint:afterconcat','copy:libs','uglify','less','imagemin','replace','copy:docs','qunit','resemble','dox']);
+  grunt.registerTask('js', ['concat','amd','uglify']);
+  grunt.registerTask('css', ['copy','less']);
+
+};
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/jstree.jquery.json
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vakata-jstree-3.3.5/jstree.jquery.json Sun Dec 30 13:11:48 2018 -0500
[
@@ -0,0 +1,28 @@
+{
+ "name": "jstree",
+ "title": "jsTree",
+ "description": "Tree view for jQuery",
+ "version": "3.3.5",
+ "homepage": "http://jstree.com",
+ "keywords": [
+ "ui",
+ "tree",
+ "jstree"
+ ],
+ "author": {
+ "name": "Ivan Bozhanov",
+ "email": "jstree@jstree.com",
+ "url": "http://vakata.com"
+ },
+ "licenses": [
+ {
+ "type": "MIT",
+ "url": "https://github.com/vakata/jstree/blob/master/LICENSE-MIT"
+ }
+ ],
+ "bugs": "https://github.com/vakata/jstree/issues",
+ "demo": "http://jstree.com/demo",
+ "dependencies": {
+ "jquery": ">=1.9.1"
+ }
+}
\ No newline at end of file
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/package.json
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vakata-jstree-3.3.5/package.json Sun Dec 30 13:11:48 2018 -0500
[
@@ -0,0 +1,58 @@
+{
+  "name": "jstree",
+  "title": "jsTree",
+  "description": "jQuery tree plugin",
+  "version": "3.3.5",
+  "homepage": "http://jstree.com",
+  "main": "./dist/jstree.js",
+  "author": {
+    "name": "Ivan Bozhanov",
+    "email": "jstree@jstree.com",
+    "url": "http://vakata.com"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/vakata/jstree.git"
+  },
+  "bugs": {
+    "url": "https://github.com/vakata/jstree/issues"
+  },
+  "license": "MIT",
+  "licenses": [
+    {
+      "type": "MIT",
+      "url": "https://github.com/vakata/jstree/blob/master/LICENSE-MIT"
+    }
+  ],
+  "keywords": [],
+  "devDependencies": {
+    "dox": "~0.4.4",
+    "grunt": "~0.4.0",
+    "grunt-contrib-concat": "*",
+    "grunt-contrib-copy": "*",
+    "grunt-contrib-imagemin": "~0.4.0",
+    "grunt-contrib-jshint": "*",
+    "grunt-contrib-less": "~0.8.2",
+    "grunt-contrib-qunit": "~v0.3.0",
+    "grunt-contrib-uglify": "*",
+    "grunt-contrib-watch": "~0.5.3",
+    "grunt-phantomcss-gitdiff": "0.0.7",
+    "grunt-resemble-cli": "0.0.8",
+    "grunt-text-replace": "~0.3.11"
+  },
+  "dependencies": {
+    "jquery": ">=1.9.1"
+  },
+  "npmName": "jstree",
+  "npmFileMap": [
+    {
+      "basePath": "/dist/",
+      "files": [
+        "jstree.min.js",
+        "themes/**/*.png",
+        "themes/**/*.gif",
+        "themes/**/*.min.css"
+      ]
+    }
+  ]
+}
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/src/intro.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vakata-jstree-3.3.5/src/intro.js Sun Dec 30 13:11:48 2018 -0500
[
@@ -0,0 +1,14 @@
+/*globals jQuery, define, module, exports, require, window, document, postMessage */
+(function (factory) {
+ "use strict";
+ if (typeof define === 'function' && define.amd) {
+ define(['jquery'], factory);
+ }
+ else if(typeof module !== 'undefined' && module.exports) {
+ module.exports = factory(require('jquery'));
+ }
+ else {
+ factory(jQuery);
+ }
+}(function ($, undefined) {
+ "use strict";
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/src/jstree.changed.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vakata-jstree-3.3.5/src/jstree.changed.js Sun Dec 30 13:11:48 2018 -0500
[
@@ -0,0 +1,69 @@
+/**
+ * ### Changed plugin
+ *
+ * This plugin adds more information to the `changed.jstree` event. The new data is contained in the `changed` event data property, and contains a lists of `selected` and `deselected` nodes.
+ */
+/*globals jQuery, define, exports, require, document */
+(function (factory) {
+ "use strict";
+ if (typeof define === 'function' && define.amd) {
+ define('jstree.changed', ['jquery','jstree'], factory);
+ }
+ else if(typeof exports === 'object') {
+ factory(require('jquery'), require('jstree'));
+ }
+ else {
+ factory(jQuery, jQuery.jstree);
+ }
+}(function ($, jstree, undefined) {
+ "use strict";
+
+ if($.jstree.plugins.changed) { return; }
+
+ $.jstree.plugins.changed = function (options, parent) {
+ var last = [];
+ this.trigger = function (ev, data) {
+ var i, j;
+ if(!data) {
+ data = {};
+ }
+ if(ev.replace('.jstree','') === 'changed') {
+ data.changed = { selected : [], deselected : [] };
+ var tmp = {};
+ for(i = 0, j = last.length; i < j; i++) {
+ tmp[last[i]] = 1;
+ }
+ for(i = 0, j = data.selected.length; i < j; i++) {
+ if(!tmp[data.selected[i]]) {
+ data.changed.selected.push(data.selected[i]);
+ }
+ else {
+ tmp[data.selected[i]] = 2;
+ }
+ }
+ for(i = 0, j = last.length; i < j; i++) {
+ if(tmp[last[i]] === 1) {
+ data.changed.deselected.push(last[i]);
+ }
+ }
+ last = data.selected.slice();
+ }
+ /**
+  * triggered when selection changes (the "changed" plugin enhances the original event with more data)
+  * @event
+  * @name changed.jstree
+  * @param {Object} node
+  * @param {Object} action the action that caused the selection to change
+  * @param {Array} selected the current selection
+  * @param {Object} changed an object containing two properties `selected` and `deselected` - both arrays of node IDs, which were selected or deselected since the last changed event
+  * @param {Object} event the event (if any) that triggered this changed event
+  * @plugin changed
+  */
+ parent.trigger.call(this, ev, data);
+ };
+ this.refresh = function (skip_loading, forget_state) {
+ last = [];
+ return parent.refresh.apply(this, arguments);
+ };
+ };
+}));
\ No newline at end of file
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/src/jstree.checkbox.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vakata-jstree-3.3.5/src/jstree.checkbox.js Sun Dec 30 13:11:48 2018 -0500
[
b'@@ -0,0 +1,976 @@\n+/**\n+ * ### Checkbox plugin\n+ *\n+ * This plugin renders checkbox icons in front of each node, making multiple selection much easier.\n+ * It also supports tri-state behavior, meaning that if a node has a few of its children checked it will be rendered as undetermined, and state will be propagated up.\n+ */\n+/*globals jQuery, define, exports, require, document */\n+(function (factory) {\n+\t"use strict";\n+\tif (typeof define === \'function\' && define.amd) {\n+\t\tdefine(\'jstree.checkbox\', [\'jquery\',\'jstree\'], factory);\n+\t}\n+\telse if(typeof exports === \'object\') {\n+\t\tfactory(require(\'jquery\'), require(\'jstree\'));\n+\t}\n+\telse {\n+\t\tfactory(jQuery, jQuery.jstree);\n+\t}\n+}(function ($, jstree, undefined) {\n+\t"use strict";\n+\n+\tif($.jstree.plugins.checkbox) { return; }\n+\n+\tvar _i = document.createElement(\'I\');\n+\t_i.className = \'jstree-icon jstree-checkbox\';\n+\t_i.setAttribute(\'role\', \'presentation\');\n+\t/**\n+\t * stores all defaults for the checkbox plugin\n+\t * @name $.jstree.defaults.checkbox\n+\t * @plugin checkbox\n+\t */\n+\t$.jstree.defaults.checkbox = {\n+\t\t/**\n+\t\t * a boolean indicating if checkboxes should be visible (can be changed at a later time using `show_checkboxes()` and `hide_checkboxes`). Defaults to `true`.\n+\t\t * @name $.jstree.defaults.checkbox.visible\n+\t\t * @plugin checkbox\n+\t\t */\n+\t\tvisible\t\t\t\t: true,\n+\t\t/**\n+\t\t * a boolean indicating if checkboxes should cascade down and have an undetermined state. Defaults to `true`.\n+\t\t * @name $.jstree.defaults.checkbox.three_state\n+\t\t * @plugin checkbox\n+\t\t */\n+\t\tthree_state\t\t\t: true,\n+\t\t/**\n+\t\t * a boolean indicating if clicking anywhere on the node should act as clicking on the checkbox. Defaults to `true`.\n+\t\t * @name $.jstree.defaults.checkbox.whole_node\n+\t\t * @plugin checkbox\n+\t\t */\n+\t\twhole_node\t\t\t: true,\n+\t\t/**\n+\t\t * a boolean indicating if the selected style of a node should be kept, or removed. Defaults to `true`.\n+\t\t * @name $.jstree.defaults.checkbox.keep_selected_style\n+\t\t * @plugin checkbox\n+\t\t */\n+\t\tkeep_selected_style\t: true,\n+\t\t/**\n+\t\t * This setting controls how cascading and undetermined nodes are applied.\n+\t\t * If \'up\' is in the string - cascading up is enabled, if \'down\' is in the string - cascading down is enabled, if \'undetermined\' is in the string - undetermined nodes will be used.\n+\t\t * If `three_state` is set to `true` this setting is automatically set to \'up+down+undetermined\'. Defaults to \'\'.\n+\t\t * @name $.jstree.defaults.checkbox.cascade\n+\t\t * @plugin checkbox\n+\t\t */\n+\t\tcascade\t\t\t\t: \'\',\n+\t\t/**\n+\t\t * This setting controls if checkbox are bound to the general tree selection or to an internal array maintained by the checkbox plugin. Defaults to `true`, only set to `false` if you know exactly what you are doing.\n+\t\t * @name $.jstree.defaults.checkbox.tie_selection\n+\t\t * @plugin checkbox\n+\t\t */\n+\t\ttie_selection\t\t: true,\n+\n+\t\t/**\n+\t\t * This setting controls if cascading down affects disabled checkboxes\n+\t\t * @name $.jstree.defaults.checkbox.cascade_to_disabled\n+\t\t * @plugin checkbox\n+\t\t */\n+\t\tcascade_to_disabled : true,\n+\n+\t\t/**\n+\t\t * This setting controls if cascading down affects hidden checkboxes\n+\t\t * @name $.jstree.defaults.checkbox.cascade_to_hidden\n+\t\t * @plugin checkbox\n+\t\t */\n+\t\tcascade_to_hidden : true\n+\t};\n+\t$.jstree.plugins.checkbox = function (options, parent) {\n+\t\tthis.bind = function () {\n+\t\t\tparent.bind.call(this);\n+\t\t\tthis._data.checkbox.uto = false;\n+\t\t\tthis._data.checkbox.selected = [];\n+\t\t\tif(this.settings.checkbox.three_state) {\n+\t\t\t\tthis.settings.checkbox.cascade = \'up+down+undetermined\';\n+\t\t\t}\n+\t\t\tthis.element\n+\t\t\t\t.on("init.jstree", $.proxy(function () {\n+\t\t\t\t\t\tthis._data.checkbox.visible = this.settings.checkbox.visible;\n+\t\t\t\t\t\tif(!this.settings.checkbox.keep_selected_style) {\n+\t\t\t\t\t\t\tthis.element.addClass(\'jstree-checkbox-no-clicked\');\n+\t\t\t\t\t\t}\n+\t\t\t\t\t\tif(this.settings.checkbox.tie_selection) {\n+\t\t\t\t\t\t\tthis.element.addClass(\'jstree-checkbox-selection\');\n+\t\t\t\t\t\t}\n+\t\t\t\t\t}, this))\n+\t\t\t\t.on("loading.jstree", $.proxy(function () {\n+\t\t\t\t'..b'urn the same as get_selected)\n+\t\t * @name get_checked([full])\n+\t\t * @param  {mixed}  full if set to `true` the returned array will consist of the full node objects, otherwise - only IDs will be returned\n+\t\t * @return {Array}\n+\t\t * @plugin checkbox\n+\t\t */\n+\t\tthis.get_checked = function (full) {\n+\t\t\tif(this.settings.checkbox.tie_selection) { return this.get_selected(full); }\n+\t\t\treturn full ? $.map(this._data.checkbox.selected, $.proxy(function (i) { return this.get_node(i); }, this)) : this._data.checkbox.selected;\n+\t\t};\n+\t\t/**\n+\t\t * get an array of all top level checked nodes (ignoring children of checked nodes) (if tie_selection is on in the settings this function will return the same as get_top_selected)\n+\t\t * @name get_top_checked([full])\n+\t\t * @param  {mixed}  full if set to `true` the returned array will consist of the full node objects, otherwise - only IDs will be returned\n+\t\t * @return {Array}\n+\t\t * @plugin checkbox\n+\t\t */\n+\t\tthis.get_top_checked = function (full) {\n+\t\t\tif(this.settings.checkbox.tie_selection) { return this.get_top_selected(full); }\n+\t\t\tvar tmp = this.get_checked(true),\n+\t\t\t\tobj = {}, i, j, k, l;\n+\t\t\tfor(i = 0, j = tmp.length; i < j; i++) {\n+\t\t\t\tobj[tmp[i].id] = tmp[i];\n+\t\t\t}\n+\t\t\tfor(i = 0, j = tmp.length; i < j; i++) {\n+\t\t\t\tfor(k = 0, l = tmp[i].children_d.length; k < l; k++) {\n+\t\t\t\t\tif(obj[tmp[i].children_d[k]]) {\n+\t\t\t\t\t\tdelete obj[tmp[i].children_d[k]];\n+\t\t\t\t\t}\n+\t\t\t\t}\n+\t\t\t}\n+\t\t\ttmp = [];\n+\t\t\tfor(i in obj) {\n+\t\t\t\tif(obj.hasOwnProperty(i)) {\n+\t\t\t\t\ttmp.push(i);\n+\t\t\t\t}\n+\t\t\t}\n+\t\t\treturn full ? $.map(tmp, $.proxy(function (i) { return this.get_node(i); }, this)) : tmp;\n+\t\t};\n+\t\t/**\n+\t\t * get an array of all bottom level checked nodes (ignoring selected parents) (if tie_selection is on in the settings this function will return the same as get_bottom_selected)\n+\t\t * @name get_bottom_checked([full])\n+\t\t * @param  {mixed}  full if set to `true` the returned array will consist of the full node objects, otherwise - only IDs will be returned\n+\t\t * @return {Array}\n+\t\t * @plugin checkbox\n+\t\t */\n+\t\tthis.get_bottom_checked = function (full) {\n+\t\t\tif(this.settings.checkbox.tie_selection) { return this.get_bottom_selected(full); }\n+\t\t\tvar tmp = this.get_checked(true),\n+\t\t\t\tobj = [], i, j;\n+\t\t\tfor(i = 0, j = tmp.length; i < j; i++) {\n+\t\t\t\tif(!tmp[i].children.length) {\n+\t\t\t\t\tobj.push(tmp[i].id);\n+\t\t\t\t}\n+\t\t\t}\n+\t\t\treturn full ? $.map(obj, $.proxy(function (i) { return this.get_node(i); }, this)) : obj;\n+\t\t};\n+\t\tthis.load_node = function (obj, callback) {\n+\t\t\tvar k, l, i, j, c, tmp;\n+\t\t\tif(!$.isArray(obj) && !this.settings.checkbox.tie_selection) {\n+\t\t\t\ttmp = this.get_node(obj);\n+\t\t\t\tif(tmp && tmp.state.loaded) {\n+\t\t\t\t\tfor(k = 0, l = tmp.children_d.length; k < l; k++) {\n+\t\t\t\t\t\tif(this._model.data[tmp.children_d[k]].state.checked) {\n+\t\t\t\t\t\t\tc = true;\n+\t\t\t\t\t\t\tthis._data.checkbox.selected = $.vakata.array_remove_item(this._data.checkbox.selected, tmp.children_d[k]);\n+\t\t\t\t\t\t}\n+\t\t\t\t\t}\n+\t\t\t\t}\n+\t\t\t}\n+\t\t\treturn parent.load_node.apply(this, arguments);\n+\t\t};\n+\t\tthis.get_state = function () {\n+\t\t\tvar state = parent.get_state.apply(this, arguments);\n+\t\t\tif(this.settings.checkbox.tie_selection) { return state; }\n+\t\t\tstate.checkbox = this._data.checkbox.selected.slice();\n+\t\t\treturn state;\n+\t\t};\n+\t\tthis.set_state = function (state, callback) {\n+\t\t\tvar res = parent.set_state.apply(this, arguments);\n+\t\t\tif(res && state.checkbox) {\n+\t\t\t\tif(!this.settings.checkbox.tie_selection) {\n+\t\t\t\t\tthis.uncheck_all();\n+\t\t\t\t\tvar _this = this;\n+\t\t\t\t\t$.each(state.checkbox, function (i, v) {\n+\t\t\t\t\t\t_this.check_node(v);\n+\t\t\t\t\t});\n+\t\t\t\t}\n+\t\t\t\tdelete state.checkbox;\n+\t\t\t\tthis.set_state(state, callback);\n+\t\t\t\treturn false;\n+\t\t\t}\n+\t\t\treturn res;\n+\t\t};\n+\t\tthis.refresh = function (skip_loading, forget_state) {\n+\t\t\tif(!this.settings.checkbox.tie_selection) {\n+\t\t\t\tthis._data.checkbox.selected = [];\n+\t\t\t}\n+\t\t\treturn parent.refresh.apply(this, arguments);\n+\t\t};\n+\t};\n+\n+\t// include the checkbox plugin by default\n+\t// $.jstree.defaults.plugins.push("checkbox");\n+}));\n'
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/src/jstree.conditionalselect.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vakata-jstree-3.3.5/src/jstree.conditionalselect.js Sun Dec 30 13:11:48 2018 -0500
[
@@ -0,0 +1,38 @@
+/**
+ * ### Conditionalselect plugin
+ *
+ * This plugin allows defining a callback to allow or deny node selection by user input (activate node method).
+ */
+/*globals jQuery, define, exports, require, document */
+(function (factory) {
+ "use strict";
+ if (typeof define === 'function' && define.amd) {
+ define('jstree.conditionalselect', ['jquery','jstree'], factory);
+ }
+ else if(typeof exports === 'object') {
+ factory(require('jquery'), require('jstree'));
+ }
+ else {
+ factory(jQuery, jQuery.jstree);
+ }
+}(function ($, jstree, undefined) {
+ "use strict";
+
+ if($.jstree.plugins.conditionalselect) { return; }
+
+ /**
+  * a callback (function) which is invoked in the instance's scope and receives two arguments - the node and the event that triggered the `activate_node` call. Returning false prevents working with the node, returning true allows invoking activate_node. Defaults to returning `true`.
+  * @name $.jstree.defaults.checkbox.visible
+  * @plugin checkbox
+  */
+ $.jstree.defaults.conditionalselect = function () { return true; };
+ $.jstree.plugins.conditionalselect = function (options, parent) {
+ // own function
+ this.activate_node = function (obj, e) {
+ if(this.settings.conditionalselect.call(this, this.get_node(obj), e)) {
+ return parent.activate_node.call(this, obj, e);
+ }
+ };
+ };
+
+}));
\ No newline at end of file
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/src/jstree.contextmenu.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vakata-jstree-3.3.5/src/jstree.contextmenu.js Sun Dec 30 13:11:48 2018 -0500
[
b'@@ -0,0 +1,661 @@\n+/**\n+ * ### Contextmenu plugin\n+ *\n+ * Shows a context menu when a node is right-clicked.\n+ */\n+/*globals jQuery, define, exports, require, document */\n+(function (factory) {\n+\t"use strict";\n+\tif (typeof define === \'function\' && define.amd) {\n+\t\tdefine(\'jstree.contextmenu\', [\'jquery\',\'jstree\'], factory);\n+\t}\n+\telse if(typeof exports === \'object\') {\n+\t\tfactory(require(\'jquery\'), require(\'jstree\'));\n+\t}\n+\telse {\n+\t\tfactory(jQuery, jQuery.jstree);\n+\t}\n+}(function ($, jstree, undefined) {\n+\t"use strict";\n+\n+\tif($.jstree.plugins.contextmenu) { return; }\n+\n+\t/**\n+\t * stores all defaults for the contextmenu plugin\n+\t * @name $.jstree.defaults.contextmenu\n+\t * @plugin contextmenu\n+\t */\n+\t$.jstree.defaults.contextmenu = {\n+\t\t/**\n+\t\t * a boolean indicating if the node should be selected when the context menu is invoked on it. Defaults to `true`.\n+\t\t * @name $.jstree.defaults.contextmenu.select_node\n+\t\t * @plugin contextmenu\n+\t\t */\n+\t\tselect_node : true,\n+\t\t/**\n+\t\t * a boolean indicating if the menu should be shown aligned with the node. Defaults to `true`, otherwise the mouse coordinates are used.\n+\t\t * @name $.jstree.defaults.contextmenu.show_at_node\n+\t\t * @plugin contextmenu\n+\t\t */\n+\t\tshow_at_node : true,\n+\t\t/**\n+\t\t * an object of actions, or a function that accepts a node and a callback function and calls the callback function with an object of actions available for that node (you can also return the items too).\n+\t\t *\n+\t\t * Each action consists of a key (a unique name) and a value which is an object with the following properties (only label and action are required). Once a menu item is activated the `action` function will be invoked with an object containing the following keys: item - the contextmenu item definition as seen below, reference - the DOM node that was used (the tree node), element - the contextmenu DOM element, position - an object with x/y properties indicating the position of the menu.\n+\t\t *\n+\t\t * * `separator_before` - a boolean indicating if there should be a separator before this item\n+\t\t * * `separator_after` - a boolean indicating if there should be a separator after this item\n+\t\t * * `_disabled` - a boolean indicating if this action should be disabled\n+\t\t * * `label` - a string - the name of the action (could be a function returning a string)\n+\t\t * * `title` - a string - an optional tooltip for the item\n+\t\t * * `action` - a function to be executed if this item is chosen, the function will receive \n+\t\t * * `icon` - a string, can be a path to an icon or a className, if using an image that is in the current directory use a `./` prefix, otherwise it will be detected as a class\n+\t\t * * `shortcut` - keyCode which will trigger the action if the menu is open (for example `113` for rename, which equals F2)\n+\t\t * * `shortcut_label` - shortcut label (like for example `F2` for rename)\n+\t\t * * `submenu` - an object with the same structure as $.jstree.defaults.contextmenu.items which can be used to create a submenu - each key will be rendered as a separate option in a submenu that will appear once the current item is hovered\n+\t\t *\n+\t\t * @name $.jstree.defaults.contextmenu.items\n+\t\t * @plugin contextmenu\n+\t\t */\n+\t\titems : function (o, cb) { // Could be an object directly\n+\t\t\treturn {\n+\t\t\t\t"create" : {\n+\t\t\t\t\t"separator_before"\t: false,\n+\t\t\t\t\t"separator_after"\t: true,\n+\t\t\t\t\t"_disabled"\t\t\t: false, //(this.check("create_node", data.reference, {}, "last")),\n+\t\t\t\t\t"label"\t\t\t\t: "Create",\n+\t\t\t\t\t"action"\t\t\t: function (data) {\n+\t\t\t\t\t\tvar inst = $.jstree.reference(data.reference),\n+\t\t\t\t\t\t\tobj = inst.get_node(data.reference);\n+\t\t\t\t\t\tinst.create_node(obj, {}, "last", function (new_node) {\n+\t\t\t\t\t\t\ttry {\n+\t\t\t\t\t\t\t\tinst.edit(new_node);\n+\t\t\t\t\t\t\t} catch (ex) {\n+\t\t\t\t\t\t\t\tsetTimeout(function () { inst.edit(new_node); },0);\n+\t\t\t\t\t\t\t}\n+\t\t\t\t\t\t});\n+\t\t\t\t\t}\n+\t\t\t\t},\n+\t\t\t\t"rename" : {\n+\t\t\t\t\t"separator_before"\t: false,\n+\t\t\t\t\t"separator_after"\t: false,\n+\t\t\t\t\t"_disabled"\t\t\t: false, //(this.check("rename_node", data.reference, this.get_paren'..b'\t\t\t$(this).find(".vakata-context-hover").addBack().removeClass("vakata-context-hover");\n+\t\t\t\t})\n+\t\t\t\t.on("mouseleave", function (e) {\n+\t\t\t\t\t$(this).find(".vakata-context-hover").removeClass("vakata-context-hover");\n+\t\t\t\t\tif($.vakata.context.settings.hide_onmouseleave) {\n+\t\t\t\t\t\tto = setTimeout(\n+\t\t\t\t\t\t\t(function (t) {\n+\t\t\t\t\t\t\t\treturn function () { $.vakata.context.hide(); };\n+\t\t\t\t\t\t\t}(this)), $.vakata.context.settings.hide_onmouseleave);\n+\t\t\t\t\t}\n+\t\t\t\t})\n+\t\t\t\t.on("click", "a", function (e) {\n+\t\t\t\t\te.preventDefault();\n+\t\t\t\t//})\n+\t\t\t\t//.on("mouseup", "a", function (e) {\n+\t\t\t\t\tif(!$(this).blur().parent().hasClass("vakata-context-disabled") && $.vakata.context._execute($(this).attr("rel")) !== false) {\n+\t\t\t\t\t\t$.vakata.context.hide();\n+\t\t\t\t\t}\n+\t\t\t\t})\n+\t\t\t\t.on(\'keydown\', \'a\', function (e) {\n+\t\t\t\t\t\tvar o = null;\n+\t\t\t\t\t\tswitch(e.which) {\n+\t\t\t\t\t\t\tcase 13:\n+\t\t\t\t\t\t\tcase 32:\n+\t\t\t\t\t\t\t\te.type = "click";\n+\t\t\t\t\t\t\t\te.preventDefault();\n+\t\t\t\t\t\t\t\t$(e.currentTarget).trigger(e);\n+\t\t\t\t\t\t\t\tbreak;\n+\t\t\t\t\t\t\tcase 37:\n+\t\t\t\t\t\t\t\tif(vakata_context.is_visible) {\n+\t\t\t\t\t\t\t\t\tvakata_context.element.find(".vakata-context-hover").last().closest("li").first().find("ul").hide().find(".vakata-context-hover").removeClass("vakata-context-hover").end().end().children(\'a\').focus();\n+\t\t\t\t\t\t\t\t\te.stopImmediatePropagation();\n+\t\t\t\t\t\t\t\t\te.preventDefault();\n+\t\t\t\t\t\t\t\t}\n+\t\t\t\t\t\t\t\tbreak;\n+\t\t\t\t\t\t\tcase 38:\n+\t\t\t\t\t\t\t\tif(vakata_context.is_visible) {\n+\t\t\t\t\t\t\t\t\to = vakata_context.element.find("ul:visible").addBack().last().children(".vakata-context-hover").removeClass("vakata-context-hover").prevAll("li:not(.vakata-context-separator)").first();\n+\t\t\t\t\t\t\t\t\tif(!o.length) { o = vakata_context.element.find("ul:visible").addBack().last().children("li:not(.vakata-context-separator)").last(); }\n+\t\t\t\t\t\t\t\t\to.addClass("vakata-context-hover").children(\'a\').focus();\n+\t\t\t\t\t\t\t\t\te.stopImmediatePropagation();\n+\t\t\t\t\t\t\t\t\te.preventDefault();\n+\t\t\t\t\t\t\t\t}\n+\t\t\t\t\t\t\t\tbreak;\n+\t\t\t\t\t\t\tcase 39:\n+\t\t\t\t\t\t\t\tif(vakata_context.is_visible) {\n+\t\t\t\t\t\t\t\t\tvakata_context.element.find(".vakata-context-hover").last().children("ul").show().children("li:not(.vakata-context-separator)").removeClass("vakata-context-hover").first().addClass("vakata-context-hover").children(\'a\').focus();\n+\t\t\t\t\t\t\t\t\te.stopImmediatePropagation();\n+\t\t\t\t\t\t\t\t\te.preventDefault();\n+\t\t\t\t\t\t\t\t}\n+\t\t\t\t\t\t\t\tbreak;\n+\t\t\t\t\t\t\tcase 40:\n+\t\t\t\t\t\t\t\tif(vakata_context.is_visible) {\n+\t\t\t\t\t\t\t\t\to = vakata_context.element.find("ul:visible").addBack().last().children(".vakata-context-hover").removeClass("vakata-context-hover").nextAll("li:not(.vakata-context-separator)").first();\n+\t\t\t\t\t\t\t\t\tif(!o.length) { o = vakata_context.element.find("ul:visible").addBack().last().children("li:not(.vakata-context-separator)").first(); }\n+\t\t\t\t\t\t\t\t\to.addClass("vakata-context-hover").children(\'a\').focus();\n+\t\t\t\t\t\t\t\t\te.stopImmediatePropagation();\n+\t\t\t\t\t\t\t\t\te.preventDefault();\n+\t\t\t\t\t\t\t\t}\n+\t\t\t\t\t\t\t\tbreak;\n+\t\t\t\t\t\t\tcase 27:\n+\t\t\t\t\t\t\t\t$.vakata.context.hide();\n+\t\t\t\t\t\t\t\te.preventDefault();\n+\t\t\t\t\t\t\t\tbreak;\n+\t\t\t\t\t\t\tdefault:\n+\t\t\t\t\t\t\t\t//console.log(e.which);\n+\t\t\t\t\t\t\t\tbreak;\n+\t\t\t\t\t\t}\n+\t\t\t\t\t})\n+\t\t\t\t.on(\'keydown\', function (e) {\n+\t\t\t\t\te.preventDefault();\n+\t\t\t\t\tvar a = vakata_context.element.find(\'.vakata-contextmenu-shortcut-\' + e.which).parent();\n+\t\t\t\t\tif(a.parent().not(\'.vakata-context-disabled\')) {\n+\t\t\t\t\t\ta.click();\n+\t\t\t\t\t}\n+\t\t\t\t});\n+\n+\t\t\t$(document)\n+\t\t\t\t.on("mousedown.vakata.jstree", function (e) {\n+\t\t\t\t\tif(vakata_context.is_visible && vakata_context.element[0] !== e.target  && !$.contains(vakata_context.element[0], e.target)) {\n+\t\t\t\t\t\t$.vakata.context.hide();\n+\t\t\t\t\t}\n+\t\t\t\t})\n+\t\t\t\t.on("context_show.vakata.jstree", function (e, data) {\n+\t\t\t\t\tvakata_context.element.find("li:has(ul)").children("a").addClass("vakata-context-parent");\n+\t\t\t\t\tif(right_to_left) {\n+\t\t\t\t\t\tvakata_context.element.addClass("vakata-context-rtl").css("direction", "rtl");\n+\t\t\t\t\t}\n+\t\t\t\t\t// also apply a RTL class?\n+\t\t\t\t\tvakata_context.element.find("ul").hide().end();\n+\t\t\t\t});\n+\t\t});\n+\t}($));\n+\t// $.jstree.defaults.plugins.push("contextmenu");\n+}));\n'
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/src/jstree.dnd.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vakata-jstree-3.3.5/src/jstree.dnd.js Sun Dec 30 13:11:48 2018 -0500
[
b'@@ -0,0 +1,657 @@\n+/**\n+ * ### Drag\'n\'drop plugin\n+ *\n+ * Enables dragging and dropping of nodes in the tree, resulting in a move or copy operations.\n+ */\n+/*globals jQuery, define, exports, require, document */\n+(function (factory) {\n+\t"use strict";\n+\tif (typeof define === \'function\' && define.amd) {\n+\t\tdefine(\'jstree.dnd\', [\'jquery\',\'jstree\'], factory);\n+\t}\n+\telse if(typeof exports === \'object\') {\n+\t\tfactory(require(\'jquery\'), require(\'jstree\'));\n+\t}\n+\telse {\n+\t\tfactory(jQuery, jQuery.jstree);\n+\t}\n+}(function ($, jstree, undefined) {\n+\t"use strict";\n+\n+\tif($.jstree.plugins.dnd) { return; }\n+\n+\t/**\n+\t * stores all defaults for the drag\'n\'drop plugin\n+\t * @name $.jstree.defaults.dnd\n+\t * @plugin dnd\n+\t */\n+\t$.jstree.defaults.dnd = {\n+\t\t/**\n+\t\t * a boolean indicating if a copy should be possible while dragging (by pressint the meta key or Ctrl). Defaults to `true`.\n+\t\t * @name $.jstree.defaults.dnd.copy\n+\t\t * @plugin dnd\n+\t\t */\n+\t\tcopy : true,\n+\t\t/**\n+\t\t * a number indicating how long a node should remain hovered while dragging to be opened. Defaults to `500`.\n+\t\t * @name $.jstree.defaults.dnd.open_timeout\n+\t\t * @plugin dnd\n+\t\t */\n+\t\topen_timeout : 500,\n+\t\t/**\n+\t\t * a function invoked each time a node is about to be dragged, invoked in the tree\'s scope and receives the nodes about to be dragged as an argument (array) and the event that started the drag - return `false` to prevent dragging\n+\t\t * @name $.jstree.defaults.dnd.is_draggable\n+\t\t * @plugin dnd\n+\t\t */\n+\t\tis_draggable : true,\n+\t\t/**\n+\t\t * a boolean indicating if checks should constantly be made while the user is dragging the node (as opposed to checking only on drop), default is `true`\n+\t\t * @name $.jstree.defaults.dnd.check_while_dragging\n+\t\t * @plugin dnd\n+\t\t */\n+\t\tcheck_while_dragging : true,\n+\t\t/**\n+\t\t * a boolean indicating if nodes from this tree should only be copied with dnd (as opposed to moved), default is `false`\n+\t\t * @name $.jstree.defaults.dnd.always_copy\n+\t\t * @plugin dnd\n+\t\t */\n+\t\talways_copy : false,\n+\t\t/**\n+\t\t * when dropping a node "inside", this setting indicates the position the node should go to - it can be an integer or a string: "first" (same as 0) or "last", default is `0`\n+\t\t * @name $.jstree.defaults.dnd.inside_pos\n+\t\t * @plugin dnd\n+\t\t */\n+\t\tinside_pos : 0,\n+\t\t/**\n+\t\t * when starting the drag on a node that is selected this setting controls if all selected nodes are dragged or only the single node, default is `true`, which means all selected nodes are dragged when the drag is started on a selected node\n+\t\t * @name $.jstree.defaults.dnd.drag_selection\n+\t\t * @plugin dnd\n+\t\t */\n+\t\tdrag_selection : true,\n+\t\t/**\n+\t\t * controls whether dnd works on touch devices. If left as boolean true dnd will work the same as in desktop browsers, which in some cases may impair scrolling. If set to boolean false dnd will not work on touch devices. There is a special third option - string "selected" which means only selected nodes can be dragged on touch devices.\n+\t\t * @name $.jstree.defaults.dnd.touch\n+\t\t * @plugin dnd\n+\t\t */\n+\t\ttouch : true,\n+\t\t/**\n+\t\t * controls whether items can be dropped anywhere on the node, not just on the anchor, by default only the node anchor is a valid drop target. Works best with the wholerow plugin. If enabled on mobile depending on the interface it might be hard for the user to cancel the drop, since the whole tree container will be a valid drop target.\n+\t\t * @name $.jstree.defaults.dnd.large_drop_target\n+\t\t * @plugin dnd\n+\t\t */\n+\t\tlarge_drop_target : false,\n+\t\t/**\n+\t\t * controls whether a drag can be initiated from any part of the node and not just the text/icon part, works best with the wholerow plugin. Keep in mind it can cause problems with tree scrolling on mobile depending on the interface - in that case set the touch option to "selected".\n+\t\t * @name $.jstree.defaults.dnd.large_drag_target\n+\t\t * @plugin dnd\n+\t\t */\n+\t\tlarge_drag_target : false,\n+\t\t/**\n+\t\t * controls whether use HTML5 dnd api instead of classical. That will all'..b'scrollHeight > this.offsetHeight || this.scrollWidth > this.offsetWidth);\n+\t\t\t\t\t})\n+\t\t\t\t\t.each(function () {\n+\t\t\t\t\t\tvar t = $(this), o = t.offset();\n+\t\t\t\t\t\tif(this.scrollHeight > this.offsetHeight) {\n+\t\t\t\t\t\t\tif(o.top + t.height() - e.pageY < $.vakata.dnd.settings.scroll_proximity)\t{ vakata_dnd.scroll_t = 1; }\n+\t\t\t\t\t\t\tif(e.pageY - o.top < $.vakata.dnd.settings.scroll_proximity)\t\t\t\t{ vakata_dnd.scroll_t = -1; }\n+\t\t\t\t\t\t}\n+\t\t\t\t\t\tif(this.scrollWidth > this.offsetWidth) {\n+\t\t\t\t\t\t\tif(o.left + t.width() - e.pageX < $.vakata.dnd.settings.scroll_proximity)\t{ vakata_dnd.scroll_l = 1; }\n+\t\t\t\t\t\t\tif(e.pageX - o.left < $.vakata.dnd.settings.scroll_proximity)\t\t\t\t{ vakata_dnd.scroll_l = -1; }\n+\t\t\t\t\t\t}\n+\t\t\t\t\t\tif(vakata_dnd.scroll_t || vakata_dnd.scroll_l) {\n+\t\t\t\t\t\t\tvakata_dnd.scroll_e = $(this);\n+\t\t\t\t\t\t\treturn false;\n+\t\t\t\t\t\t}\n+\t\t\t\t\t});\n+\n+\t\t\t\tif(!vakata_dnd.scroll_e) {\n+\t\t\t\t\td  = $(document); w = $(window);\n+\t\t\t\t\tdh = d.height(); wh = w.height();\n+\t\t\t\t\tdw = d.width(); ww = w.width();\n+\t\t\t\t\tdt = d.scrollTop(); dl = d.scrollLeft();\n+\t\t\t\t\tif(dh > wh && e.pageY - dt < $.vakata.dnd.settings.scroll_proximity)\t\t{ vakata_dnd.scroll_t = -1;  }\n+\t\t\t\t\tif(dh > wh && wh - (e.pageY - dt) < $.vakata.dnd.settings.scroll_proximity)\t{ vakata_dnd.scroll_t = 1; }\n+\t\t\t\t\tif(dw > ww && e.pageX - dl < $.vakata.dnd.settings.scroll_proximity)\t\t{ vakata_dnd.scroll_l = -1; }\n+\t\t\t\t\tif(dw > ww && ww - (e.pageX - dl) < $.vakata.dnd.settings.scroll_proximity)\t{ vakata_dnd.scroll_l = 1; }\n+\t\t\t\t\tif(vakata_dnd.scroll_t || vakata_dnd.scroll_l) {\n+\t\t\t\t\t\tvakata_dnd.scroll_e = d;\n+\t\t\t\t\t}\n+\t\t\t\t}\n+\t\t\t\tif(vakata_dnd.scroll_e) { $.vakata.dnd._scroll(true); }\n+\n+\t\t\t\tif(vakata_dnd.helper) {\n+\t\t\t\t\tht = parseInt(e.pageY + $.vakata.dnd.settings.helper_top, 10);\n+\t\t\t\t\thl = parseInt(e.pageX + $.vakata.dnd.settings.helper_left, 10);\n+\t\t\t\t\tif(dh && ht + 25 > dh) { ht = dh - 50; }\n+\t\t\t\t\tif(dw && hl + vakata_dnd.helper_w > dw) { hl = dw - (vakata_dnd.helper_w + 2); }\n+\t\t\t\t\tvakata_dnd.helper.css({\n+\t\t\t\t\t\tleft\t: hl + "px",\n+\t\t\t\t\t\ttop\t\t: ht + "px"\n+\t\t\t\t\t});\n+\t\t\t\t}\n+\t\t\t\t/**\n+\t\t\t\t * triggered on the document when a drag is in progress\n+\t\t\t\t * @event\n+\t\t\t\t * @plugin dnd\n+\t\t\t\t * @name dnd_move.vakata\n+\t\t\t\t * @param {Mixed} data any data supplied with the call to $.vakata.dnd.start\n+\t\t\t\t * @param {DOM} element the DOM element being dragged\n+\t\t\t\t * @param {jQuery} helper the helper shown next to the mouse\n+\t\t\t\t * @param {Object} event the event that caused this to trigger (most likely mousemove)\n+\t\t\t\t */\n+\t\t\t\t$.vakata.dnd._trigger("move", e);\n+\t\t\t\treturn false;\n+\t\t\t},\n+\t\t\tstop : function (e) {\n+\t\t\t\tif(e.type === "touchend" && e.originalEvent && e.originalEvent.changedTouches && e.originalEvent.changedTouches[0]) {\n+\t\t\t\t\te.pageX = e.originalEvent.changedTouches[0].pageX;\n+\t\t\t\t\te.pageY = e.originalEvent.changedTouches[0].pageY;\n+\t\t\t\t\te.target = document.elementFromPoint(e.originalEvent.changedTouches[0].pageX - window.pageXOffset, e.originalEvent.changedTouches[0].pageY - window.pageYOffset);\n+\t\t\t\t}\n+\t\t\t\tif(vakata_dnd.is_drag) {\n+\t\t\t\t\t/**\n+\t\t\t\t\t * triggered on the document when a drag stops (the dragged element is dropped)\n+\t\t\t\t\t * @event\n+\t\t\t\t\t * @plugin dnd\n+\t\t\t\t\t * @name dnd_stop.vakata\n+\t\t\t\t\t * @param {Mixed} data any data supplied with the call to $.vakata.dnd.start\n+\t\t\t\t\t * @param {DOM} element the DOM element being dragged\n+\t\t\t\t\t * @param {jQuery} helper the helper shown next to the mouse\n+\t\t\t\t\t * @param {Object} event the event that caused the stop\n+\t\t\t\t\t */\n+\t\t\t\t\tif (e.target !== vakata_dnd.target) {\n+\t\t\t\t\t\t$(vakata_dnd.target).off(\'click.vakata\');\n+\t\t\t\t\t}\n+\t\t\t\t\t$.vakata.dnd._trigger("stop", e);\n+\t\t\t\t}\n+\t\t\t\telse {\n+\t\t\t\t\tif(e.type === "touchend" && e.target === vakata_dnd.target) {\n+\t\t\t\t\t\tvar to = setTimeout(function () { $(e.target).click(); }, 100);\n+\t\t\t\t\t\t$(e.target).one(\'click\', function() { if(to) { clearTimeout(to); } });\n+\t\t\t\t\t}\n+\t\t\t\t}\n+\t\t\t\t$.vakata.dnd._clean();\n+\t\t\t\treturn false;\n+\t\t\t}\n+\t\t};\n+\t}($));\n+\n+\t// include the dnd plugin by default\n+\t// $.jstree.defaults.plugins.push("dnd");\n+}));\n'
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/src/jstree.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vakata-jstree-3.3.5/src/jstree.js Sun Dec 30 13:11:48 2018 -0500
[
b'@@ -0,0 +1,4920 @@\n+/*!\n+ * jsTree {{VERSION}}\n+ * http://jstree.com/\n+ *\n+ * Copyright (c) 2014 Ivan Bozhanov (http://vakata.com)\n+ *\n+ * Licensed same as jquery - under the terms of the MIT License\n+ *   http://www.opensource.org/licenses/mit-license.php\n+ */\n+/*!\n+ * if using jslint please allow for the jQuery global and use following options:\n+ * jslint: loopfunc: true, browser: true, ass: true, bitwise: true, continue: true, nomen: true, plusplus: true, regexp: true, unparam: true, todo: true, white: true\n+ */\n+/*jshint -W083 */\n+/*globals jQuery, define, module, exports, require, window, document, postMessage */\n+(function (factory) {\n+\t"use strict";\n+\tif (typeof define === \'function\' && define.amd) {\n+\t\tdefine([\'jquery\'], factory);\n+\t}\n+\telse if(typeof module !== \'undefined\' && module.exports) {\n+\t\tmodule.exports = factory(require(\'jquery\'));\n+\t}\n+\telse {\n+\t\tfactory(jQuery);\n+\t}\n+}(function ($, undefined) {\n+\t"use strict";\n+\n+\t// prevent another load? maybe there is a better way?\n+\tif($.jstree) {\n+\t\treturn;\n+\t}\n+\n+\t/**\n+\t * ### jsTree core functionality\n+\t */\n+\n+\t// internal variables\n+\tvar instance_counter = 0,\n+\t\tccp_node = false,\n+\t\tccp_mode = false,\n+\t\tccp_inst = false,\n+\t\tthemes_loaded = [],\n+\t\tsrc = $(\'script:last\').attr(\'src\'),\n+\t\tdocument = window.document; // local variable is always faster to access then a global\n+\n+\t/**\n+\t * holds all jstree related functions and variables, including the actual class and methods to create, access and manipulate instances.\n+\t * @name $.jstree\n+\t */\n+\t$.jstree = {\n+\t\t/**\n+\t\t * specifies the jstree version in use\n+\t\t * @name $.jstree.version\n+\t\t */\n+\t\tversion : \'{{VERSION}}\',\n+\t\t/**\n+\t\t * holds all the default options used when creating new instances\n+\t\t * @name $.jstree.defaults\n+\t\t */\n+\t\tdefaults : {\n+\t\t\t/**\n+\t\t\t * configure which plugins will be active on an instance. Should be an array of strings, where each element is a plugin name. The default is `[]`\n+\t\t\t * @name $.jstree.defaults.plugins\n+\t\t\t */\n+\t\t\tplugins : []\n+\t\t},\n+\t\t/**\n+\t\t * stores all loaded jstree plugins (used internally)\n+\t\t * @name $.jstree.plugins\n+\t\t */\n+\t\tplugins : {},\n+\t\tpath : src && src.indexOf(\'/\') !== -1 ? src.replace(/\\/[^\\/]+$/,\'\') : \'\',\n+\t\tidregex : /[\\\\:&!^|()\\[\\]<>@*\'+~#";.,=\\- \\/${}%?`]/g,\n+\t\troot : \'#\'\n+\t};\n+\t\n+\t/**\n+\t * creates a jstree instance\n+\t * @name $.jstree.create(el [, options])\n+\t * @param {DOMElement|jQuery|String} el the element to create the instance on, can be jQuery extended or a selector\n+\t * @param {Object} options options for this instance (extends `$.jstree.defaults`)\n+\t * @return {jsTree} the new instance\n+\t */\n+\t$.jstree.create = function (el, options) {\n+\t\tvar tmp = new $.jstree.core(++instance_counter),\n+\t\t\topt = options;\n+\t\toptions = $.extend(true, {}, $.jstree.defaults, options);\n+\t\tif(opt && opt.plugins) {\n+\t\t\toptions.plugins = opt.plugins;\n+\t\t}\n+\t\t$.each(options.plugins, function (i, k) {\n+\t\t\tif(i !== \'core\') {\n+\t\t\t\ttmp = tmp.plugin(k, options[k]);\n+\t\t\t}\n+\t\t});\n+\t\t$(el).data(\'jstree\', tmp);\n+\t\ttmp.init(el, options);\n+\t\treturn tmp;\n+\t};\n+\t/**\n+\t * remove all traces of jstree from the DOM and destroy all instances\n+\t * @name $.jstree.destroy()\n+\t */\n+\t$.jstree.destroy = function () {\n+\t\t$(\'.jstree:jstree\').jstree(\'destroy\');\n+\t\t$(document).off(\'.jstree\');\n+\t};\n+\t/**\n+\t * the jstree class constructor, used only internally\n+\t * @private\n+\t * @name $.jstree.core(id)\n+\t * @param {Number} id this instance\'s index\n+\t */\n+\t$.jstree.core = function (id) {\n+\t\tthis._id = id;\n+\t\tthis._cnt = 0;\n+\t\tthis._wrk = null;\n+\t\tthis._data = {\n+\t\t\tcore : {\n+\t\t\t\tthemes : {\n+\t\t\t\t\tname : false,\n+\t\t\t\t\tdots : false,\n+\t\t\t\t\ticons : false,\n+\t\t\t\t\tellipsis : false\n+\t\t\t\t},\n+\t\t\t\tselected : [],\n+\t\t\t\tlast_error : {},\n+\t\t\t\tworking : false,\n+\t\t\t\tworker_queue : [],\n+\t\t\t\tfocused : null\n+\t\t\t}\n+\t\t};\n+\t};\n+\t/**\n+\t * get a reference to an existing instance\n+\t *\n+\t * __Examples__\n+\t *\n+\t *\t// provided a container with an ID of "tree", and a nested node with an ID of "branch"\n+\t *\t// all of there will return the sa'..b'ldren(".jstree-anchor").children(".jstree-themeicon");\n+\t\t\tif(icon === false) {\n+\t\t\t\tdom.removeClass(\'jstree-themeicon-custom \' + old).css("background","").removeAttr("rel");\n+\t\t\t\tthis.hide_icon(obj);\n+\t\t\t}\n+\t\t\telse if(icon === true || icon === null || icon === undefined || icon === \'\') {\n+\t\t\t\tdom.removeClass(\'jstree-themeicon-custom \' + old).css("background","").removeAttr("rel");\n+\t\t\t\tif(old === false) { this.show_icon(obj); }\n+\t\t\t}\n+\t\t\telse if(icon.indexOf("/") === -1 && icon.indexOf(".") === -1) {\n+\t\t\t\tdom.removeClass(old).css("background","");\n+\t\t\t\tdom.addClass(icon + \' jstree-themeicon-custom\').attr("rel",icon);\n+\t\t\t\tif(old === false) { this.show_icon(obj); }\n+\t\t\t}\n+\t\t\telse {\n+\t\t\t\tdom.removeClass(old).css("background","");\n+\t\t\t\tdom.addClass(\'jstree-themeicon-custom\').css("background", "url(\'" + icon + "\') center center no-repeat").attr("rel",icon);\n+\t\t\t\tif(old === false) { this.show_icon(obj); }\n+\t\t\t}\n+\t\t\treturn true;\n+\t\t},\n+\t\t/**\n+\t\t * get the node icon for a node\n+\t\t * @name get_icon(obj)\n+\t\t * @param {mixed} obj\n+\t\t * @return {String}\n+\t\t */\n+\t\tget_icon : function (obj) {\n+\t\t\tobj = this.get_node(obj);\n+\t\t\treturn (!obj || obj.id === $.jstree.root) ? false : obj.icon;\n+\t\t},\n+\t\t/**\n+\t\t * hide the icon on an individual node\n+\t\t * @name hide_icon(obj)\n+\t\t * @param {mixed} obj\n+\t\t */\n+\t\thide_icon : function (obj) {\n+\t\t\tvar t1, t2;\n+\t\t\tif($.isArray(obj)) {\n+\t\t\t\tobj = obj.slice();\n+\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n+\t\t\t\t\tthis.hide_icon(obj[t1]);\n+\t\t\t\t}\n+\t\t\t\treturn true;\n+\t\t\t}\n+\t\t\tobj = this.get_node(obj);\n+\t\t\tif(!obj || obj === $.jstree.root) { return false; }\n+\t\t\tobj.icon = false;\n+\t\t\tthis.get_node(obj, true).children(".jstree-anchor").children(".jstree-themeicon").addClass(\'jstree-themeicon-hidden\');\n+\t\t\treturn true;\n+\t\t},\n+\t\t/**\n+\t\t * show the icon on an individual node\n+\t\t * @name show_icon(obj)\n+\t\t * @param {mixed} obj\n+\t\t */\n+\t\tshow_icon : function (obj) {\n+\t\t\tvar t1, t2, dom;\n+\t\t\tif($.isArray(obj)) {\n+\t\t\t\tobj = obj.slice();\n+\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n+\t\t\t\t\tthis.show_icon(obj[t1]);\n+\t\t\t\t}\n+\t\t\t\treturn true;\n+\t\t\t}\n+\t\t\tobj = this.get_node(obj);\n+\t\t\tif(!obj || obj === $.jstree.root) { return false; }\n+\t\t\tdom = this.get_node(obj, true);\n+\t\t\tobj.icon = dom.length ? dom.children(".jstree-anchor").children(".jstree-themeicon").attr(\'rel\') : true;\n+\t\t\tif(!obj.icon) { obj.icon = true; }\n+\t\t\tdom.children(".jstree-anchor").children(".jstree-themeicon").removeClass(\'jstree-themeicon-hidden\');\n+\t\t\treturn true;\n+\t\t}\n+\t};\n+\n+\t// helpers\n+\t$.vakata = {};\n+\t// collect attributes\n+\t$.vakata.attributes = function(node, with_values) {\n+\t\tnode = $(node)[0];\n+\t\tvar attr = with_values ? {} : [];\n+\t\tif(node && node.attributes) {\n+\t\t\t$.each(node.attributes, function (i, v) {\n+\t\t\t\tif($.inArray(v.name.toLowerCase(),[\'style\',\'contenteditable\',\'hasfocus\',\'tabindex\']) !== -1) { return; }\n+\t\t\t\tif(v.value !== null && $.trim(v.value) !== \'\') {\n+\t\t\t\t\tif(with_values) { attr[v.name] = v.value; }\n+\t\t\t\t\telse { attr.push(v.name); }\n+\t\t\t\t}\n+\t\t\t});\n+\t\t}\n+\t\treturn attr;\n+\t};\n+\t$.vakata.array_unique = function(array) {\n+\t\tvar a = [], i, j, l, o = {};\n+\t\tfor(i = 0, l = array.length; i < l; i++) {\n+\t\t\tif(o[array[i]] === undefined) {\n+\t\t\t\ta.push(array[i]);\n+\t\t\t\to[array[i]] = true;\n+\t\t\t}\n+\t\t}\n+\t\treturn a;\n+\t};\n+\t// remove item from array\n+\t$.vakata.array_remove = function(array, from) {\n+\t\tarray.splice(from, 1);\n+\t\treturn array;\n+\t\t//var rest = array.slice((to || from) + 1 || array.length);\n+\t\t//array.length = from < 0 ? array.length + from : from;\n+\t\t//array.push.apply(array, rest);\n+\t\t//return array;\n+\t};\n+\t// remove item from array\n+\t$.vakata.array_remove_item = function(array, item) {\n+\t\tvar tmp = $.inArray(item, array);\n+\t\treturn tmp !== -1 ? $.vakata.array_remove(array, tmp) : array;\n+\t};\n+\t$.vakata.array_filter = function(c,a,b,d,e) {\n+\t\tif (c.filter) {\n+\t\t\treturn c.filter(a, b);\n+\t\t}\n+\t\td=[];\n+\t\tfor (e in c) {\n+\t\t\tif (~~e+\'\'===e+\'\' && e>=0 && a.call(b,c[e],+e,c)) {\n+\t\t\t\td.push(c[e]);\n+\t\t\t}\n+\t\t}\n+\t\treturn d;\n+\t};\n+}));\n'
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/src/jstree.massload.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vakata-jstree-3.3.5/src/jstree.massload.js Sun Dec 30 13:11:48 2018 -0500
[
@@ -0,0 +1,137 @@
+/**
+ * ### Massload plugin
+ *
+ * Adds massload functionality to jsTree, so that multiple nodes can be loaded in a single request (only useful with lazy loading).
+ */
+/*globals jQuery, define, exports, require, document */
+(function (factory) {
+ "use strict";
+ if (typeof define === 'function' && define.amd) {
+ define('jstree.massload', ['jquery','jstree'], factory);
+ }
+ else if(typeof exports === 'object') {
+ factory(require('jquery'), require('jstree'));
+ }
+ else {
+ factory(jQuery, jQuery.jstree);
+ }
+}(function ($, jstree, undefined) {
+ "use strict";
+
+ if($.jstree.plugins.massload) { return; }
+
+ /**
+  * massload configuration
+  *
+  * It is possible to set this to a standard jQuery-like AJAX config.
+  * In addition to the standard jQuery ajax options here you can supply functions for `data` and `url`, the functions will be run in the current instance's scope and a param will be passed indicating which node IDs need to be loaded, the return value of those functions will be used.
+  *
+  * You can also set this to a function, that function will receive the node IDs being loaded as argument and a second param which is a function (callback) which should be called with the result.
+  *
+  * Both the AJAX and the function approach rely on the same return value - an object where the keys are the node IDs, and the value is the children of that node as an array.
+  *
+  * {
+  * "id1" : [{ "text" : "Child of ID1", "id" : "c1" }, { "text" : "Another child of ID1", "id" : "c2" }],
+  * "id2" : [{ "text" : "Child of ID2", "id" : "c3" }]
+  * }
+  * 
+  * @name $.jstree.defaults.massload
+  * @plugin massload
+  */
+ $.jstree.defaults.massload = null;
+ $.jstree.plugins.massload = function (options, parent) {
+ this.init = function (el, options) {
+ this._data.massload = {};
+ parent.init.call(this, el, options);
+ };
+ this._load_nodes = function (nodes, callback, is_callback, force_reload) {
+ var s = this.settings.massload,
+ nodesString = JSON.stringify(nodes),
+ toLoad = [],
+ m = this._model.data,
+ i, j, dom;
+ if (!is_callback) {
+ for(i = 0, j = nodes.length; i < j; i++) {
+ if(!m[nodes[i]] || ( (!m[nodes[i]].state.loaded && !m[nodes[i]].state.failed) || force_reload) ) {
+ toLoad.push(nodes[i]);
+ dom = this.get_node(nodes[i], true);
+ if (dom && dom.length) {
+ dom.addClass("jstree-loading").attr('aria-busy',true);
+ }
+ }
+ }
+ this._data.massload = {};
+ if (toLoad.length) {
+ if($.isFunction(s)) {
+ return s.call(this, toLoad, $.proxy(function (data) {
+ var i, j;
+ if(data) {
+ for(i in data) {
+ if(data.hasOwnProperty(i)) {
+ this._data.massload[i] = data[i];
+ }
+ }
+ }
+ for(i = 0, j = nodes.length; i < j; i++) {
+ dom = this.get_node(nodes[i], true);
+ if (dom && dom.length) {
+ dom.removeClass("jstree-loading").attr('aria-busy',false);
+ }
+ }
+ parent._load_nodes.call(this, nodes, callback, is_callback, force_reload);
+ }, this));
+ }
+ if(typeof s === 'object' && s && s.url) {
+ s = $.extend(true, {}, s);
+ if($.isFunction(s.url)) {
+ s.url = s.url.call(this, toLoad);
+ }
+ if($.isFunction(s.data)) {
+ s.data = s.data.call(this, toLoad);
+ }
+ return $.ajax(s)
+ .done($.proxy(function (data,t,x) {
+ var i, j;
+ if(data) {
+ for(i in data) {
+ if(data.hasOwnProperty(i)) {
+ this._data.massload[i] = data[i];
+ }
+ }
+ }
+ for(i = 0, j = nodes.length; i < j; i++) {
+ dom = this.get_node(nodes[i], true);
+ if (dom && dom.length) {
+ dom.removeClass("jstree-loading").attr('aria-busy',false);
+ }
+ }
+ parent._load_nodes.call(this, nodes, callback, is_callback, force_reload);
+ }, this))
+ .fail($.proxy(function (f) {
+ parent._load_nodes.call(this, nodes, callback, is_callback, force_reload);
+ }, this));
+ }
+ }
+ }
+ return parent._load_nodes.call(this, nodes, callback, is_callback, force_reload);
+ };
+ this._load_node = function (obj, callback) {
+ var data = this._data.massload[obj.id],
+ rslt = null, dom;
+ if(data) {
+ rslt = this[typeof data === 'string' ? '_append_html_data' : '_append_json_data'](
+ obj,
+ typeof data === 'string' ? $($.parseHTML(data)).filter(function () { return this.nodeType !== 3; }) : data,
+ function (status) { callback.call(this, status); }
+ );
+ dom = this.get_node(obj.id, true);
+ if (dom && dom.length) {
+ dom.removeClass("jstree-loading").attr('aria-busy',false);
+ }
+ delete this._data.massload[obj.id];
+ return rslt;
+ }
+ return parent._load_node.call(this, obj, callback);
+ };
+ };
+}));
\ No newline at end of file
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/src/jstree.search.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vakata-jstree-3.3.5/src/jstree.search.js Sun Dec 30 13:11:48 2018 -0500
[
b'@@ -0,0 +1,421 @@\n+/**\n+ * ### Search plugin\n+ *\n+ * Adds search functionality to jsTree.\n+ */\n+/*globals jQuery, define, exports, require, document */\n+(function (factory) {\n+\t"use strict";\n+\tif (typeof define === \'function\' && define.amd) {\n+\t\tdefine(\'jstree.search\', [\'jquery\',\'jstree\'], factory);\n+\t}\n+\telse if(typeof exports === \'object\') {\n+\t\tfactory(require(\'jquery\'), require(\'jstree\'));\n+\t}\n+\telse {\n+\t\tfactory(jQuery, jQuery.jstree);\n+\t}\n+}(function ($, jstree, undefined) {\n+\t"use strict";\n+\n+\tif($.jstree.plugins.search) { return; }\n+\n+\t/**\n+\t * stores all defaults for the search plugin\n+\t * @name $.jstree.defaults.search\n+\t * @plugin search\n+\t */\n+\t$.jstree.defaults.search = {\n+\t\t/**\n+\t\t * a jQuery-like AJAX config, which jstree uses if a server should be queried for results.\n+\t\t *\n+\t\t * A `str` (which is the search string) parameter will be added with the request, an optional `inside` parameter will be added if the search is limited to a node id. The expected result is a JSON array with nodes that need to be opened so that matching nodes will be revealed.\n+\t\t * Leave this setting as `false` to not query the server. You can also set this to a function, which will be invoked in the instance\'s scope and receive 3 parameters - the search string, the callback to call with the array of nodes to load, and the optional node ID to limit the search to\n+\t\t * @name $.jstree.defaults.search.ajax\n+\t\t * @plugin search\n+\t\t */\n+\t\tajax : false,\n+\t\t/**\n+\t\t * Indicates if the search should be fuzzy or not (should `chnd3` match `child node 3`). Default is `false`.\n+\t\t * @name $.jstree.defaults.search.fuzzy\n+\t\t * @plugin search\n+\t\t */\n+\t\tfuzzy : false,\n+\t\t/**\n+\t\t * Indicates if the search should be case sensitive. Default is `false`.\n+\t\t * @name $.jstree.defaults.search.case_sensitive\n+\t\t * @plugin search\n+\t\t */\n+\t\tcase_sensitive : false,\n+\t\t/**\n+\t\t * Indicates if the tree should be filtered (by default) to show only matching nodes (keep in mind this can be a heavy on large trees in old browsers).\n+\t\t * This setting can be changed at runtime when calling the search method. Default is `false`.\n+\t\t * @name $.jstree.defaults.search.show_only_matches\n+\t\t * @plugin search\n+\t\t */\n+\t\tshow_only_matches : false,\n+\t\t/**\n+\t\t * Indicates if the children of matched element are shown (when show_only_matches is true)\n+\t\t * This setting can be changed at runtime when calling the search method. Default is `false`.\n+\t\t * @name $.jstree.defaults.search.show_only_matches_children\n+\t\t * @plugin search\n+\t\t */\n+\t\tshow_only_matches_children : false,\n+\t\t/**\n+\t\t * Indicates if all nodes opened to reveal the search result, should be closed when the search is cleared or a new search is performed. Default is `true`.\n+\t\t * @name $.jstree.defaults.search.close_opened_onclear\n+\t\t * @plugin search\n+\t\t */\n+\t\tclose_opened_onclear : true,\n+\t\t/**\n+\t\t * Indicates if only leaf nodes should be included in search results. Default is `false`.\n+\t\t * @name $.jstree.defaults.search.search_leaves_only\n+\t\t * @plugin search\n+\t\t */\n+\t\tsearch_leaves_only : false,\n+\t\t/**\n+\t\t * If set to a function it wil be called in the instance\'s scope with two arguments - search string and node (where node will be every node in the structure, so use with caution).\n+\t\t * If the function returns a truthy value the node will be considered a match (it might not be displayed if search_only_leaves is set to true and the node is not a leaf). Default is `false`.\n+\t\t * @name $.jstree.defaults.search.search_callback\n+\t\t * @plugin search\n+\t\t */\n+\t\tsearch_callback : false\n+\t};\n+\n+\t$.jstree.plugins.search = function (options, parent) {\n+\t\tthis.bind = function () {\n+\t\t\tparent.bind.call(this);\n+\n+\t\t\tthis._data.search.str = "";\n+\t\t\tthis._data.search.dom = $();\n+\t\t\tthis._data.search.res = [];\n+\t\t\tthis._data.search.opn = [];\n+\t\t\tthis._data.search.som = false;\n+\t\t\tthis._data.search.smc = false;\n+\t\t\tthis._data.search.hdn = [];\n+\n+\t\t\tthis.element\n+\t\t\t\t.on("search.jstree", $.proxy(function (e, data) {\n+\t\t\t\t\t\tif(this._data.se'..b'\n+\t\t\t\t}\n+\t\t\t}\n+\t\t\treturn obj;\n+\t\t};\n+\t};\n+\n+\t// helpers\n+\t(function ($) {\n+\t\t// from http://kiro.me/projects/fuse.html\n+\t\t$.vakata.search = function(pattern, txt, options) {\n+\t\t\toptions = options || {};\n+\t\t\toptions = $.extend({}, $.vakata.search.defaults, options);\n+\t\t\tif(options.fuzzy !== false) {\n+\t\t\t\toptions.fuzzy = true;\n+\t\t\t}\n+\t\t\tpattern = options.caseSensitive ? pattern : pattern.toLowerCase();\n+\t\t\tvar MATCH_LOCATION\t= options.location,\n+\t\t\t\tMATCH_DISTANCE\t= options.distance,\n+\t\t\t\tMATCH_THRESHOLD\t= options.threshold,\n+\t\t\t\tpatternLen = pattern.length,\n+\t\t\t\tmatchmask, pattern_alphabet, match_bitapScore, search;\n+\t\t\tif(patternLen > 32) {\n+\t\t\t\toptions.fuzzy = false;\n+\t\t\t}\n+\t\t\tif(options.fuzzy) {\n+\t\t\t\tmatchmask = 1 << (patternLen - 1);\n+\t\t\t\tpattern_alphabet = (function () {\n+\t\t\t\t\tvar mask = {},\n+\t\t\t\t\t\ti = 0;\n+\t\t\t\t\tfor (i = 0; i < patternLen; i++) {\n+\t\t\t\t\t\tmask[pattern.charAt(i)] = 0;\n+\t\t\t\t\t}\n+\t\t\t\t\tfor (i = 0; i < patternLen; i++) {\n+\t\t\t\t\t\tmask[pattern.charAt(i)] |= 1 << (patternLen - i - 1);\n+\t\t\t\t\t}\n+\t\t\t\t\treturn mask;\n+\t\t\t\t}());\n+\t\t\t\tmatch_bitapScore = function (e, x) {\n+\t\t\t\t\tvar accuracy = e / patternLen,\n+\t\t\t\t\t\tproximity = Math.abs(MATCH_LOCATION - x);\n+\t\t\t\t\tif(!MATCH_DISTANCE) {\n+\t\t\t\t\t\treturn proximity ? 1.0 : accuracy;\n+\t\t\t\t\t}\n+\t\t\t\t\treturn accuracy + (proximity / MATCH_DISTANCE);\n+\t\t\t\t};\n+\t\t\t}\n+\t\t\tsearch = function (text) {\n+\t\t\t\ttext = options.caseSensitive ? text : text.toLowerCase();\n+\t\t\t\tif(pattern === text || text.indexOf(pattern) !== -1) {\n+\t\t\t\t\treturn {\n+\t\t\t\t\t\tisMatch: true,\n+\t\t\t\t\t\tscore: 0\n+\t\t\t\t\t};\n+\t\t\t\t}\n+\t\t\t\tif(!options.fuzzy) {\n+\t\t\t\t\treturn {\n+\t\t\t\t\t\tisMatch: false,\n+\t\t\t\t\t\tscore: 1\n+\t\t\t\t\t};\n+\t\t\t\t}\n+\t\t\t\tvar i, j,\n+\t\t\t\t\ttextLen = text.length,\n+\t\t\t\t\tscoreThreshold = MATCH_THRESHOLD,\n+\t\t\t\t\tbestLoc = text.indexOf(pattern, MATCH_LOCATION),\n+\t\t\t\t\tbinMin, binMid,\n+\t\t\t\t\tbinMax = patternLen + textLen,\n+\t\t\t\t\tlastRd, start, finish, rd, charMatch,\n+\t\t\t\t\tscore = 1,\n+\t\t\t\t\tlocations = [];\n+\t\t\t\tif (bestLoc !== -1) {\n+\t\t\t\t\tscoreThreshold = Math.min(match_bitapScore(0, bestLoc), scoreThreshold);\n+\t\t\t\t\tbestLoc = text.lastIndexOf(pattern, MATCH_LOCATION + patternLen);\n+\t\t\t\t\tif (bestLoc !== -1) {\n+\t\t\t\t\t\tscoreThreshold = Math.min(match_bitapScore(0, bestLoc), scoreThreshold);\n+\t\t\t\t\t}\n+\t\t\t\t}\n+\t\t\t\tbestLoc = -1;\n+\t\t\t\tfor (i = 0; i < patternLen; i++) {\n+\t\t\t\t\tbinMin = 0;\n+\t\t\t\t\tbinMid = binMax;\n+\t\t\t\t\twhile (binMin < binMid) {\n+\t\t\t\t\t\tif (match_bitapScore(i, MATCH_LOCATION + binMid) <= scoreThreshold) {\n+\t\t\t\t\t\t\tbinMin = binMid;\n+\t\t\t\t\t\t} else {\n+\t\t\t\t\t\t\tbinMax = binMid;\n+\t\t\t\t\t\t}\n+\t\t\t\t\t\tbinMid = Math.floor((binMax - binMin) / 2 + binMin);\n+\t\t\t\t\t}\n+\t\t\t\t\tbinMax = binMid;\n+\t\t\t\t\tstart = Math.max(1, MATCH_LOCATION - binMid + 1);\n+\t\t\t\t\tfinish = Math.min(MATCH_LOCATION + binMid, textLen) + patternLen;\n+\t\t\t\t\trd = new Array(finish + 2);\n+\t\t\t\t\trd[finish + 1] = (1 << i) - 1;\n+\t\t\t\t\tfor (j = finish; j >= start; j--) {\n+\t\t\t\t\t\tcharMatch = pattern_alphabet[text.charAt(j - 1)];\n+\t\t\t\t\t\tif (i === 0) {\n+\t\t\t\t\t\t\trd[j] = ((rd[j + 1] << 1) | 1) & charMatch;\n+\t\t\t\t\t\t} else {\n+\t\t\t\t\t\t\trd[j] = ((rd[j + 1] << 1) | 1) & charMatch | (((lastRd[j + 1] | lastRd[j]) << 1) | 1) | lastRd[j + 1];\n+\t\t\t\t\t\t}\n+\t\t\t\t\t\tif (rd[j] & matchmask) {\n+\t\t\t\t\t\t\tscore = match_bitapScore(i, j - 1);\n+\t\t\t\t\t\t\tif (score <= scoreThreshold) {\n+\t\t\t\t\t\t\t\tscoreThreshold = score;\n+\t\t\t\t\t\t\t\tbestLoc = j - 1;\n+\t\t\t\t\t\t\t\tlocations.push(bestLoc);\n+\t\t\t\t\t\t\t\tif (bestLoc > MATCH_LOCATION) {\n+\t\t\t\t\t\t\t\t\tstart = Math.max(1, 2 * MATCH_LOCATION - bestLoc);\n+\t\t\t\t\t\t\t\t} else {\n+\t\t\t\t\t\t\t\t\tbreak;\n+\t\t\t\t\t\t\t\t}\n+\t\t\t\t\t\t\t}\n+\t\t\t\t\t\t}\n+\t\t\t\t\t}\n+\t\t\t\t\tif (match_bitapScore(i + 1, MATCH_LOCATION) > scoreThreshold) {\n+\t\t\t\t\t\tbreak;\n+\t\t\t\t\t}\n+\t\t\t\t\tlastRd = rd;\n+\t\t\t\t}\n+\t\t\t\treturn {\n+\t\t\t\t\tisMatch: bestLoc >= 0,\n+\t\t\t\t\tscore: score\n+\t\t\t\t};\n+\t\t\t};\n+\t\t\treturn txt === true ? { \'search\' : search } : search(txt);\n+\t\t};\n+\t\t$.vakata.search.defaults = {\n+\t\t\tlocation : 0,\n+\t\t\tdistance : 100,\n+\t\t\tthreshold : 0.6,\n+\t\t\tfuzzy : false,\n+\t\t\tcaseSensitive : false\n+\t\t};\n+\t}($));\n+\n+\t// include the search plugin by default\n+\t// $.jstree.defaults.plugins.push("search");\n+}));\n'
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/src/jstree.sort.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vakata-jstree-3.3.5/src/jstree.sort.js Sun Dec 30 13:11:48 2018 -0500
[
@@ -0,0 +1,74 @@
+/**
+ * ### Sort plugin
+ *
+ * Automatically sorts all siblings in the tree according to a sorting function.
+ */
+/*globals jQuery, define, exports, require */
+(function (factory) {
+ "use strict";
+ if (typeof define === 'function' && define.amd) {
+ define('jstree.sort', ['jquery','jstree'], factory);
+ }
+ else if(typeof exports === 'object') {
+ factory(require('jquery'), require('jstree'));
+ }
+ else {
+ factory(jQuery, jQuery.jstree);
+ }
+}(function ($, jstree, undefined) {
+ "use strict";
+
+ if($.jstree.plugins.sort) { return; }
+
+ /**
+  * the settings function used to sort the nodes.
+  * It is executed in the tree's context, accepts two nodes as arguments and should return `1` or `-1`.
+  * @name $.jstree.defaults.sort
+  * @plugin sort
+  */
+ $.jstree.defaults.sort = function (a, b) {
+ //return this.get_type(a) === this.get_type(b) ? (this.get_text(a) > this.get_text(b) ? 1 : -1) : this.get_type(a) >= this.get_type(b);
+ return this.get_text(a) > this.get_text(b) ? 1 : -1;
+ };
+ $.jstree.plugins.sort = function (options, parent) {
+ this.bind = function () {
+ parent.bind.call(this);
+ this.element
+ .on("model.jstree", $.proxy(function (e, data) {
+ this.sort(data.parent, true);
+ }, this))
+ .on("rename_node.jstree create_node.jstree", $.proxy(function (e, data) {
+ this.sort(data.parent || data.node.parent, false);
+ this.redraw_node(data.parent || data.node.parent, true);
+ }, this))
+ .on("move_node.jstree copy_node.jstree", $.proxy(function (e, data) {
+ this.sort(data.parent, false);
+ this.redraw_node(data.parent, true);
+ }, this));
+ };
+ /**
+  * used to sort a node's children
+  * @private
+  * @name sort(obj [, deep])
+  * @param  {mixed} obj the node
+  * @param {Boolean} deep if set to `true` nodes are sorted recursively.
+  * @plugin sort
+  * @trigger search.jstree
+  */
+ this.sort = function (obj, deep) {
+ var i, j;
+ obj = this.get_node(obj);
+ if(obj && obj.children && obj.children.length) {
+ obj.children.sort($.proxy(this.settings.sort, this));
+ if(deep) {
+ for(i = 0, j = obj.children_d.length; i < j; i++) {
+ this.sort(obj.children_d[i], false);
+ }
+ }
+ }
+ };
+ };
+
+ // include the sort plugin by default
+ // $.jstree.defaults.plugins.push("sort");
+}));
\ No newline at end of file
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/src/jstree.state.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vakata-jstree-3.3.5/src/jstree.state.js Sun Dec 30 13:11:48 2018 -0500
[
@@ -0,0 +1,138 @@
+/**
+ * ### State plugin
+ *
+ * Saves the state of the tree (selected nodes, opened nodes) on the user's computer using available options (localStorage, cookies, etc)
+ */
+/*globals jQuery, define, exports, require */
+(function (factory) {
+ "use strict";
+ if (typeof define === 'function' && define.amd) {
+ define('jstree.state', ['jquery','jstree'], factory);
+ }
+ else if(typeof exports === 'object') {
+ factory(require('jquery'), require('jstree'));
+ }
+ else {
+ factory(jQuery, jQuery.jstree);
+ }
+}(function ($, jstree, undefined) {
+ "use strict";
+
+ if($.jstree.plugins.state) { return; }
+
+ var to = false;
+ /**
+  * stores all defaults for the state plugin
+  * @name $.jstree.defaults.state
+  * @plugin state
+  */
+ $.jstree.defaults.state = {
+ /**
+  * A string for the key to use when saving the current tree (change if using multiple trees in your project). Defaults to `jstree`.
+  * @name $.jstree.defaults.state.key
+  * @plugin state
+  */
+ key : 'jstree',
+ /**
+  * A space separated list of events that trigger a state save. Defaults to `changed.jstree open_node.jstree close_node.jstree`.
+  * @name $.jstree.defaults.state.events
+  * @plugin state
+  */
+ events : 'changed.jstree open_node.jstree close_node.jstree check_node.jstree uncheck_node.jstree',
+ /**
+  * Time in milliseconds after which the state will expire. Defaults to 'false' meaning - no expire.
+  * @name $.jstree.defaults.state.ttl
+  * @plugin state
+  */
+ ttl : false,
+ /**
+  * A function that will be executed prior to restoring state with one argument - the state object. Can be used to clear unwanted parts of the state.
+  * @name $.jstree.defaults.state.filter
+  * @plugin state
+  */
+ filter : false,
+ /**
+  * Should loaded nodes be restored (setting this to true means that it is possible that the whole tree will be loaded for some users - use with caution). Defaults to `false`
+  * @name $.jstree.defaults.state.preserve_loaded
+  * @plugin state
+  */
+ preserve_loaded : false
+ };
+ $.jstree.plugins.state = function (options, parent) {
+ this.bind = function () {
+ parent.bind.call(this);
+ var bind = $.proxy(function () {
+ this.element.on(this.settings.state.events, $.proxy(function () {
+ if(to) { clearTimeout(to); }
+ to = setTimeout($.proxy(function () { this.save_state(); }, this), 100);
+ }, this));
+ /**
+  * triggered when the state plugin is finished restoring the state (and immediately after ready if there is no state to restore).
+  * @event
+  * @name state_ready.jstree
+  * @plugin state
+  */
+ this.trigger('state_ready');
+ }, this);
+ this.element
+ .on("ready.jstree", $.proxy(function (e, data) {
+ this.element.one("restore_state.jstree", bind);
+ if(!this.restore_state()) { bind(); }
+ }, this));
+ };
+ /**
+  * save the state
+  * @name save_state()
+  * @plugin state
+  */
+ this.save_state = function () {
+ var tm = this.get_state();
+ if (!this.settings.state.preserve_loaded) {
+ delete tm.core.loaded;
+ }
+ var st = { 'state' : tm, 'ttl' : this.settings.state.ttl, 'sec' : +(new Date()) };
+ $.vakata.storage.set(this.settings.state.key, JSON.stringify(st));
+ };
+ /**
+  * restore the state from the user's computer
+  * @name restore_state()
+  * @plugin state
+  */
+ this.restore_state = function () {
+ var k = $.vakata.storage.get(this.settings.state.key);
+ if(!!k) { try { k = JSON.parse(k); } catch(ex) { return false; } }
+ if(!!k && k.ttl && k.sec && +(new Date()) - k.sec > k.ttl) { return false; }
+ if(!!k && k.state) { k = k.state; }
+ if(!!k && $.isFunction(this.settings.state.filter)) { k = this.settings.state.filter.call(this, k); }
+ if(!!k) {
+ if (!this.settings.state.preserve_loaded) {
+ delete k.core.loaded;
+ }
+ this.element.one("set_state.jstree", function (e, data) { data.instance.trigger('restore_state', { 'state' : $.extend(true, {}, k) }); });
+ this.set_state(k);
+ return true;
+ }
+ return false;
+ };
+ /**
+  * clear the state on the user's computer
+  * @name clear_state()
+  * @plugin state
+  */
+ this.clear_state = function () {
+ return $.vakata.storage.del(this.settings.state.key);
+ };
+ };
+
+ (function ($, undefined) {
+ $.vakata.storage = {
+ // simply specifying the functions in FF throws an error
+ set : function (key, val) { return window.localStorage.setItem(key, val); },
+ get : function (key) { return window.localStorage.getItem(key); },
+ del : function (key) { return window.localStorage.removeItem(key); }
+ };
+ }($));
+
+ // include the state plugin by default
+ // $.jstree.defaults.plugins.push("state");
+}));
\ No newline at end of file
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/src/jstree.types.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vakata-jstree-3.3.5/src/jstree.types.js Sun Dec 30 13:11:48 2018 -0500
[
b'@@ -0,0 +1,372 @@\n+/**\n+ * ### Types plugin\n+ *\n+ * Makes it possible to add predefined types for groups of nodes, which make it possible to easily control nesting rules and icon for each group.\n+ */\n+/*globals jQuery, define, exports, require */\n+(function (factory) {\n+\t"use strict";\n+\tif (typeof define === \'function\' && define.amd) {\n+\t\tdefine(\'jstree.types\', [\'jquery\',\'jstree\'], factory);\n+\t}\n+\telse if(typeof exports === \'object\') {\n+\t\tfactory(require(\'jquery\'), require(\'jstree\'));\n+\t}\n+\telse {\n+\t\tfactory(jQuery, jQuery.jstree);\n+\t}\n+}(function ($, jstree, undefined) {\n+\t"use strict";\n+\n+\tif($.jstree.plugins.types) { return; }\n+\n+\t/**\n+\t * An object storing all types as key value pairs, where the key is the type name and the value is an object that could contain following keys (all optional).\n+\t *\n+\t * * `max_children` the maximum number of immediate children this node type can have. Do not specify or set to `-1` for unlimited.\n+\t * * `max_depth` the maximum number of nesting this node type can have. A value of `1` would mean that the node can have children, but no grandchildren. Do not specify or set to `-1` for unlimited.\n+\t * * `valid_children` an array of node type strings, that nodes of this type can have as children. Do not specify or set to `-1` for no limits.\n+\t * * `icon` a string - can be a path to an icon or a className, if using an image that is in the current directory use a `./` prefix, otherwise it will be detected as a class. Omit to use the default icon from your theme.\n+\t * * `li_attr` an object of values which will be used to add HTML attributes on the resulting LI DOM node (merged with the node\'s own data)\n+\t * * `a_attr` an object of values which will be used to add HTML attributes on the resulting A DOM node (merged with the node\'s own data)\n+\t *\n+\t * There are two predefined types:\n+\t *\n+\t * * `#` represents the root of the tree, for example `max_children` would control the maximum number of root nodes.\n+\t * * `default` represents the default node - any settings here will be applied to all nodes that do not have a type specified.\n+\t *\n+\t * @name $.jstree.defaults.types\n+\t * @plugin types\n+\t */\n+\t$.jstree.defaults.types = {\n+\t\t\'default\' : {}\n+\t};\n+\t$.jstree.defaults.types[$.jstree.root] = {};\n+\n+\t$.jstree.plugins.types = function (options, parent) {\n+\t\tthis.init = function (el, options) {\n+\t\t\tvar i, j;\n+\t\t\tif(options && options.types && options.types[\'default\']) {\n+\t\t\t\tfor(i in options.types) {\n+\t\t\t\t\tif(i !== "default" && i !== $.jstree.root && options.types.hasOwnProperty(i)) {\n+\t\t\t\t\t\tfor(j in options.types[\'default\']) {\n+\t\t\t\t\t\t\tif(options.types[\'default\'].hasOwnProperty(j) && options.types[i][j] === undefined) {\n+\t\t\t\t\t\t\t\toptions.types[i][j] = options.types[\'default\'][j];\n+\t\t\t\t\t\t\t}\n+\t\t\t\t\t\t}\n+\t\t\t\t\t}\n+\t\t\t\t}\n+\t\t\t}\n+\t\t\tparent.init.call(this, el, options);\n+\t\t\tthis._model.data[$.jstree.root].type = $.jstree.root;\n+\t\t};\n+\t\tthis.refresh = function (skip_loading, forget_state) {\n+\t\t\tparent.refresh.call(this, skip_loading, forget_state);\n+\t\t\tthis._model.data[$.jstree.root].type = $.jstree.root;\n+\t\t};\n+\t\tthis.bind = function () {\n+\t\t\tthis.element\n+\t\t\t\t.on(\'model.jstree\', $.proxy(function (e, data) {\n+\t\t\t\t\t\tvar m = this._model.data,\n+\t\t\t\t\t\t\tdpc = data.nodes,\n+\t\t\t\t\t\t\tt = this.settings.types,\n+\t\t\t\t\t\t\ti, j, c = \'default\', k;\n+\t\t\t\t\t\tfor(i = 0, j = dpc.length; i < j; i++) {\n+\t\t\t\t\t\t\tc = \'default\';\n+\t\t\t\t\t\t\tif(m[dpc[i]].original && m[dpc[i]].original.type && t[m[dpc[i]].original.type]) {\n+\t\t\t\t\t\t\t\tc = m[dpc[i]].original.type;\n+\t\t\t\t\t\t\t}\n+\t\t\t\t\t\t\tif(m[dpc[i]].data && m[dpc[i]].data.jstree && m[dpc[i]].data.jstree.type && t[m[dpc[i]].data.jstree.type]) {\n+\t\t\t\t\t\t\t\tc = m[dpc[i]].data.jstree.type;\n+\t\t\t\t\t\t\t}\n+\t\t\t\t\t\t\tm[dpc[i]].type = c;\n+\t\t\t\t\t\t\tif(m[dpc[i]].icon === true && t[c].icon !== undefined) {\n+\t\t\t\t\t\t\t\tm[dpc[i]].icon = t[c].icon;\n+\t\t\t\t\t\t\t}\n+\t\t\t\t\t\t\tif(t[c].li_attr !== undefined && typeof t[c].li_attr === \'object\') {\n+\t\t\t\t\t\t\t\tfor (k in t[c].li_attr) {\n+\t\t\t\t\t\t\t\t\tif (t[c].li_attr.hasOwnProperty(k)) {\n+\t\t\t\t\t\t\t\t\t\tif (k === \'id\''..b'e node to change\n+\t\t * @param {String} type the new type\n+\t\t * @plugin types\n+\t\t */\n+\t\tthis.set_type = function (obj, type) {\n+\t\t\tvar m = this._model.data, t, t1, t2, old_type, old_icon, k, d, a;\n+\t\t\tif($.isArray(obj)) {\n+\t\t\t\tobj = obj.slice();\n+\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n+\t\t\t\t\tthis.set_type(obj[t1], type);\n+\t\t\t\t}\n+\t\t\t\treturn true;\n+\t\t\t}\n+\t\t\tt = this.settings.types;\n+\t\t\tobj = this.get_node(obj);\n+\t\t\tif(!t[type] || !obj) { return false; }\n+\t\t\td = this.get_node(obj, true);\n+\t\t\tif (d && d.length) {\n+\t\t\t\ta = d.children(\'.jstree-anchor\');\n+\t\t\t}\n+\t\t\told_type = obj.type;\n+\t\t\told_icon = this.get_icon(obj);\n+\t\t\tobj.type = type;\n+\t\t\tif(old_icon === true || !t[old_type] || (t[old_type].icon !== undefined && old_icon === t[old_type].icon)) {\n+\t\t\t\tthis.set_icon(obj, t[type].icon !== undefined ? t[type].icon : true);\n+\t\t\t}\n+\n+\t\t\t// remove old type props\n+\t\t\tif(t[old_type] && t[old_type].li_attr !== undefined && typeof t[old_type].li_attr === \'object\') {\n+\t\t\t\tfor (k in t[old_type].li_attr) {\n+\t\t\t\t\tif (t[old_type].li_attr.hasOwnProperty(k)) {\n+\t\t\t\t\t\tif (k === \'id\') {\n+\t\t\t\t\t\t\tcontinue;\n+\t\t\t\t\t\t}\n+\t\t\t\t\t\telse if (k === \'class\') {\n+\t\t\t\t\t\t\tm[obj.id].li_attr[\'class\'] = (m[obj.id].li_attr[\'class\'] || \'\').replace(t[old_type].li_attr[k], \'\');\n+\t\t\t\t\t\t\tif (d) { d.removeClass(t[old_type].li_attr[k]); }\n+\t\t\t\t\t\t}\n+\t\t\t\t\t\telse if (m[obj.id].li_attr[k] === t[old_type].li_attr[k]) {\n+\t\t\t\t\t\t\tm[obj.id].li_attr[k] = null;\n+\t\t\t\t\t\t\tif (d) { d.removeAttr(k); }\n+\t\t\t\t\t\t}\n+\t\t\t\t\t}\n+\t\t\t\t}\n+\t\t\t}\n+\t\t\tif(t[old_type] && t[old_type].a_attr !== undefined && typeof t[old_type].a_attr === \'object\') {\n+\t\t\t\tfor (k in t[old_type].a_attr) {\n+\t\t\t\t\tif (t[old_type].a_attr.hasOwnProperty(k)) {\n+\t\t\t\t\t\tif (k === \'id\') {\n+\t\t\t\t\t\t\tcontinue;\n+\t\t\t\t\t\t}\n+\t\t\t\t\t\telse if (k === \'class\') {\n+\t\t\t\t\t\t\tm[obj.id].a_attr[\'class\'] = (m[obj.id].a_attr[\'class\'] || \'\').replace(t[old_type].a_attr[k], \'\');\n+\t\t\t\t\t\t\tif (a) { a.removeClass(t[old_type].a_attr[k]); }\n+\t\t\t\t\t\t}\n+\t\t\t\t\t\telse if (m[obj.id].a_attr[k] === t[old_type].a_attr[k]) {\n+\t\t\t\t\t\t\tif (k === \'href\') {\n+\t\t\t\t\t\t\t\tm[obj.id].a_attr[k] = \'#\';\n+\t\t\t\t\t\t\t\tif (a) { a.attr(\'href\', \'#\'); }\n+\t\t\t\t\t\t\t}\n+\t\t\t\t\t\t\telse {\n+\t\t\t\t\t\t\t\tdelete m[obj.id].a_attr[k];\n+\t\t\t\t\t\t\t\tif (a) { a.removeAttr(k); }\n+\t\t\t\t\t\t\t}\n+\t\t\t\t\t\t}\n+\t\t\t\t\t}\n+\t\t\t\t}\n+\t\t\t}\n+\n+\t\t\t// add new props\n+\t\t\tif(t[type].li_attr !== undefined && typeof t[type].li_attr === \'object\') {\n+\t\t\t\tfor (k in t[type].li_attr) {\n+\t\t\t\t\tif (t[type].li_attr.hasOwnProperty(k)) {\n+\t\t\t\t\t\tif (k === \'id\') {\n+\t\t\t\t\t\t\tcontinue;\n+\t\t\t\t\t\t}\n+\t\t\t\t\t\telse if (m[obj.id].li_attr[k] === undefined) {\n+\t\t\t\t\t\t\tm[obj.id].li_attr[k] = t[type].li_attr[k];\n+\t\t\t\t\t\t\tif (d) {\n+\t\t\t\t\t\t\t\tif (k === \'class\') {\n+\t\t\t\t\t\t\t\t\td.addClass(t[type].li_attr[k]);\n+\t\t\t\t\t\t\t\t}\n+\t\t\t\t\t\t\t\telse {\n+\t\t\t\t\t\t\t\t\td.attr(k, t[type].li_attr[k]);\n+\t\t\t\t\t\t\t\t}\n+\t\t\t\t\t\t\t}\n+\t\t\t\t\t\t}\n+\t\t\t\t\t\telse if (k === \'class\') {\n+\t\t\t\t\t\t\tm[obj.id].li_attr[\'class\'] = t[type].li_attr[k] + \' \' + m[obj.id].li_attr[\'class\'];\n+\t\t\t\t\t\t\tif (d) { d.addClass(t[type].li_attr[k]); }\n+\t\t\t\t\t\t}\n+\t\t\t\t\t}\n+\t\t\t\t}\n+\t\t\t}\n+\t\t\tif(t[type].a_attr !== undefined && typeof t[type].a_attr === \'object\') {\n+\t\t\t\tfor (k in t[type].a_attr) {\n+\t\t\t\t\tif (t[type].a_attr.hasOwnProperty(k)) {\n+\t\t\t\t\t\tif (k === \'id\') {\n+\t\t\t\t\t\t\tcontinue;\n+\t\t\t\t\t\t}\n+\t\t\t\t\t\telse if (m[obj.id].a_attr[k] === undefined) {\n+\t\t\t\t\t\t\tm[obj.id].a_attr[k] = t[type].a_attr[k];\n+\t\t\t\t\t\t\tif (a) {\n+\t\t\t\t\t\t\t\tif (k === \'class\') {\n+\t\t\t\t\t\t\t\t\ta.addClass(t[type].a_attr[k]);\n+\t\t\t\t\t\t\t\t}\n+\t\t\t\t\t\t\t\telse {\n+\t\t\t\t\t\t\t\t\ta.attr(k, t[type].a_attr[k]);\n+\t\t\t\t\t\t\t\t}\n+\t\t\t\t\t\t\t}\n+\t\t\t\t\t\t}\n+\t\t\t\t\t\telse if (k === \'href\' && m[obj.id].a_attr[k] === \'#\') {\n+\t\t\t\t\t\t\tm[obj.id].a_attr[\'href\'] = t[type].a_attr[\'href\'];\n+\t\t\t\t\t\t\tif (a) { a.attr(\'href\', t[type].a_attr[\'href\']); }\n+\t\t\t\t\t\t}\n+\t\t\t\t\t\telse if (k === \'class\') {\n+\t\t\t\t\t\t\tm[obj.id].a_attr[\'class\'] = t[type].a_attr[\'class\'] + \' \' + m[obj.id].a_attr[\'class\'];\n+\t\t\t\t\t\t\tif (a) { a.addClass(t[type].a_attr[k]); }\n+\t\t\t\t\t\t}\n+\t\t\t\t\t}\n+\t\t\t\t}\n+\t\t\t}\n+\n+\t\t\treturn true;\n+\t\t};\n+\t};\n+\t// include the types plugin by default\n+\t// $.jstree.defaults.plugins.push("types");\n+}));\n'
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/src/jstree.unique.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vakata-jstree-3.3.5/src/jstree.unique.js Sun Dec 30 13:11:48 2018 -0500
[
@@ -0,0 +1,164 @@
+/**
+ * ### Unique plugin
+ *
+ * Enforces that no nodes with the same name can coexist as siblings.
+ */
+/*globals jQuery, define, exports, require */
+(function (factory) {
+ "use strict";
+ if (typeof define === 'function' && define.amd) {
+ define('jstree.unique', ['jquery','jstree'], factory);
+ }
+ else if(typeof exports === 'object') {
+ factory(require('jquery'), require('jstree'));
+ }
+ else {
+ factory(jQuery, jQuery.jstree);
+ }
+}(function ($, jstree, undefined) {
+ "use strict";
+
+ if($.jstree.plugins.unique) { return; }
+
+ /**
+  * stores all defaults for the unique plugin
+  * @name $.jstree.defaults.unique
+  * @plugin unique
+  */
+ $.jstree.defaults.unique = {
+ /**
+  * Indicates if the comparison should be case sensitive. Default is `false`.
+  * @name $.jstree.defaults.unique.case_sensitive
+  * @plugin unique
+  */
+ case_sensitive : false,
+ /**
+  * Indicates if white space should be trimmed before the comparison. Default is `false`.
+  * @name $.jstree.defaults.unique.trim_whitespace
+  * @plugin unique
+  */
+ trim_whitespace : false,
+ /**
+  * A callback executed in the instance's scope when a new node is created and the name is already taken, the two arguments are the conflicting name and the counter. The default will produce results like `New node (2)`.
+  * @name $.jstree.defaults.unique.duplicate
+  * @plugin unique
+  */
+ duplicate : function (name, counter) {
+ return name + ' (' + counter + ')';
+ }
+ };
+
+ $.jstree.plugins.unique = function (options, parent) {
+ this.check = function (chk, obj, par, pos, more) {
+ if(parent.check.call(this, chk, obj, par, pos, more) === false) { return false; }
+ obj = obj && obj.id ? obj : this.get_node(obj);
+ par = par && par.id ? par : this.get_node(par);
+ if(!par || !par.children) { return true; }
+ var n = chk === "rename_node" ? pos : obj.text,
+ c = [],
+ s = this.settings.unique.case_sensitive,
+ w = this.settings.unique.trim_whitespace,
+ m = this._model.data, i, j, t;
+ for(i = 0, j = par.children.length; i < j; i++) {
+ t = m[par.children[i]].text;
+ if (!s) {
+ t = t.toLowerCase();
+ }
+ if (w) {
+ t = t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
+ }
+ c.push(t);
+ }
+ if(!s) { n = n.toLowerCase(); }
+ if (w) { n = n.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''); }
+ switch(chk) {
+ case "delete_node":
+ return true;
+ case "rename_node":
+ t = obj.text || '';
+ if (!s) {
+ t = t.toLowerCase();
+ }
+ if (w) {
+ t = t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
+ }
+ i = ($.inArray(n, c) === -1 || (obj.text && t === n));
+ if(!i) {
+ this._data.core.last_error = { 'error' : 'check', 'plugin' : 'unique', 'id' : 'unique_01', 'reason' : 'Child with name ' + n + ' already exists. Preventing: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) };
+ }
+ return i;
+ case "create_node":
+ i = ($.inArray(n, c) === -1);
+ if(!i) {
+ this._data.core.last_error = { 'error' : 'check', 'plugin' : 'unique', 'id' : 'unique_04', 'reason' : 'Child with name ' + n + ' already exists. Preventing: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) };
+ }
+ return i;
+ case "copy_node":
+ i = ($.inArray(n, c) === -1);
+ if(!i) {
+ this._data.core.last_error = { 'error' : 'check', 'plugin' : 'unique', 'id' : 'unique_02', 'reason' : 'Child with name ' + n + ' already exists. Preventing: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) };
+ }
+ return i;
+ case "move_node":
+ i = ( (obj.parent === par.id && (!more || !more.is_multi)) || $.inArray(n, c) === -1);
+ if(!i) {
+ this._data.core.last_error = { 'error' : 'check', 'plugin' : 'unique', 'id' : 'unique_03', 'reason' : 'Child with name ' + n + ' already exists. Preventing: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) };
+ }
+ return i;
+ }
+ return true;
+ };
+ this.create_node = function (par, node, pos, callback, is_loaded) {
+ if(!node || node.text === undefined) {
+ if(par === null) {
+ par = $.jstree.root;
+ }
+ par = this.get_node(par);
+ if(!par) {
+ return parent.create_node.call(this, par, node, pos, callback, is_loaded);
+ }
+ pos = pos === undefined ? "last" : pos;
+ if(!pos.toString().match(/^(before|after)$/) && !is_loaded && !this.is_loaded(par)) {
+ return parent.create_node.call(this, par, node, pos, callback, is_loaded);
+ }
+ if(!node) { node = {}; }
+ var tmp, n, dpc, i, j, m = this._model.data, s = this.settings.unique.case_sensitive, w = this.settings.unique.trim_whitespace, cb = this.settings.unique.duplicate, t;
+ n = tmp = this.get_string('New node');
+ dpc = [];
+ for(i = 0, j = par.children.length; i < j; i++) {
+ t = m[par.children[i]].text;
+ if (!s) {
+ t = t.toLowerCase();
+ }
+ if (w) {
+ t = t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
+ }
+ dpc.push(t);
+ }
+ i = 1;
+ t = n;
+ if (!s) {
+ t = t.toLowerCase();
+ }
+ if (w) {
+ t = t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
+ }
+ while($.inArray(t, dpc) !== -1) {
+ n = cb.call(this, tmp, (++i)).toString();
+ t = n;
+ if (!s) {
+ t = t.toLowerCase();
+ }
+ if (w) {
+ t = t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
+ }
+ }
+ node.text = n;
+ }
+ return parent.create_node.call(this, par, node, pos, callback, is_loaded);
+ };
+ };
+
+ // include the unique plugin by default
+ // $.jstree.defaults.plugins.push("unique");
+}));
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/src/jstree.wholerow.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vakata-jstree-3.3.5/src/jstree.wholerow.js Sun Dec 30 13:11:48 2018 -0500
[
@@ -0,0 +1,122 @@
+/**
+ * ### Wholerow plugin
+ *
+ * Makes each node appear block level. Making selection easier. May cause slow down for large trees in old browsers.
+ */
+/*globals jQuery, define, exports, require */
+(function (factory) {
+ "use strict";
+ if (typeof define === 'function' && define.amd) {
+ define('jstree.wholerow', ['jquery','jstree'], factory);
+ }
+ else if(typeof exports === 'object') {
+ factory(require('jquery'), require('jstree'));
+ }
+ else {
+ factory(jQuery, jQuery.jstree);
+ }
+}(function ($, jstree, undefined) {
+ "use strict";
+
+ if($.jstree.plugins.wholerow) { return; }
+
+ var div = document.createElement('DIV');
+ div.setAttribute('unselectable','on');
+ div.setAttribute('role','presentation');
+ div.className = 'jstree-wholerow';
+ div.innerHTML = '&#160;';
+ $.jstree.plugins.wholerow = function (options, parent) {
+ this.bind = function () {
+ parent.bind.call(this);
+
+ this.element
+ .on('ready.jstree set_state.jstree', $.proxy(function () {
+ this.hide_dots();
+ }, this))
+ .on("init.jstree loading.jstree ready.jstree", $.proxy(function () {
+ //div.style.height = this._data.core.li_height + 'px';
+ this.get_container_ul().addClass('jstree-wholerow-ul');
+ }, this))
+ .on("deselect_all.jstree", $.proxy(function (e, data) {
+ this.element.find('.jstree-wholerow-clicked').removeClass('jstree-wholerow-clicked');
+ }, this))
+ .on("changed.jstree", $.proxy(function (e, data) {
+ this.element.find('.jstree-wholerow-clicked').removeClass('jstree-wholerow-clicked');
+ var tmp = false, i, j;
+ for(i = 0, j = data.selected.length; i < j; i++) {
+ tmp = this.get_node(data.selected[i], true);
+ if(tmp && tmp.length) {
+ tmp.children('.jstree-wholerow').addClass('jstree-wholerow-clicked');
+ }
+ }
+ }, this))
+ .on("open_node.jstree", $.proxy(function (e, data) {
+ this.get_node(data.node, true).find('.jstree-clicked').parent().children('.jstree-wholerow').addClass('jstree-wholerow-clicked');
+ }, this))
+ .on("hover_node.jstree dehover_node.jstree", $.proxy(function (e, data) {
+ if(e.type === "hover_node" && this.is_disabled(data.node)) { return; }
+ this.get_node(data.node, true).children('.jstree-wholerow')[e.type === "hover_node"?"addClass":"removeClass"]('jstree-wholerow-hovered');
+ }, this))
+ .on("contextmenu.jstree", ".jstree-wholerow", $.proxy(function (e) {
+ if (this._data.contextmenu) {
+ e.preventDefault();
+ var tmp = $.Event('contextmenu', { metaKey : e.metaKey, ctrlKey : e.ctrlKey, altKey : e.altKey, shiftKey : e.shiftKey, pageX : e.pageX, pageY : e.pageY });
+ $(e.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(tmp);
+ }
+ }, this))
+ /*!
+ .on("mousedown.jstree touchstart.jstree", ".jstree-wholerow", function (e) {
+ if(e.target === e.currentTarget) {
+ var a = $(e.currentTarget).closest(".jstree-node").children(".jstree-anchor");
+ e.target = a[0];
+ a.trigger(e);
+ }
+ })
+ */
+ .on("click.jstree", ".jstree-wholerow", function (e) {
+ e.stopImmediatePropagation();
+ var tmp = $.Event('click', { metaKey : e.metaKey, ctrlKey : e.ctrlKey, altKey : e.altKey, shiftKey : e.shiftKey });
+ $(e.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(tmp).focus();
+ })
+ .on("dblclick.jstree", ".jstree-wholerow", function (e) {
+ e.stopImmediatePropagation();
+ var tmp = $.Event('dblclick', { metaKey : e.metaKey, ctrlKey : e.ctrlKey, altKey : e.altKey, shiftKey : e.shiftKey });
+ $(e.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(tmp).focus();
+ })
+ .on("click.jstree", ".jstree-leaf > .jstree-ocl", $.proxy(function (e) {
+ e.stopImmediatePropagation();
+ var tmp = $.Event('click', { metaKey : e.metaKey, ctrlKey : e.ctrlKey, altKey : e.altKey, shiftKey : e.shiftKey });
+ $(e.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(tmp).focus();
+ }, this))
+ .on("mouseover.jstree", ".jstree-wholerow, .jstree-icon", $.proxy(function (e) {
+ e.stopImmediatePropagation();
+ if(!this.is_disabled(e.currentTarget)) {
+ this.hover_node(e.currentTarget);
+ }
+ return false;
+ }, this))
+ .on("mouseleave.jstree", ".jstree-node", $.proxy(function (e) {
+ this.dehover_node(e.currentTarget);
+ }, this));
+ };
+ this.teardown = function () {
+ if(this.settings.wholerow) {
+ this.element.find(".jstree-wholerow").remove();
+ }
+ parent.teardown.call(this);
+ };
+ this.redraw_node = function(obj, deep, callback, force_render) {
+ obj = parent.redraw_node.apply(this, arguments);
+ if(obj) {
+ var tmp = div.cloneNode(true);
+ //tmp.style.height = this._data.core.li_height + 'px';
+ if($.inArray(obj.id, this._data.core.selected) !== -1) { tmp.className += ' jstree-wholerow-clicked'; }
+ if(this._data.core.focused && this._data.core.focused === obj.id) { tmp.className += ' jstree-wholerow-hovered'; }
+ obj.insertBefore(tmp, obj.childNodes[0]);
+ }
+ return obj;
+ };
+ };
+ // include the wholerow plugin by default
+ // $.jstree.defaults.plugins.push("wholerow");
+}));
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/src/misc.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vakata-jstree-3.3.5/src/misc.js Sun Dec 30 13:11:48 2018 -0500
[
b'@@ -0,0 +1,629 @@\n+/* global jQuery */\n+\n+// disable all events\n+(function ($, undefined) {\n+\t"use strict";\n+\t$.jstree.plugins.trigger = function (options, parent) {\n+\t\tthis.init = function (el, options) {\n+\t\t\t// do not forget parent\n+\t\t\tparent.init.call(this, el, options);\n+\t\t\tthis._data.trigger.disabled = false;\n+\t\t};\n+\t\tthis.trigger = function (ev, data) {\n+\t\t\tif(!this._data.trigger.disabled) {\n+\t\t\t\tparent.trigger.call(this, ev, data);\n+\t\t\t}\n+\t\t};\n+\t\tthis.disable_events = function () { this._data.trigger.disabled = true; };\n+\t\tthis.enable_events = function () { this._data.trigger.disabled = false; };\n+\t};\n+})(jQuery);\n+\n+// mapping\n+(function ($, undefined) {\n+\t"use strict";\n+\t// use this if you need any options\n+\t$.jstree.defaults.mapper = {\n+\t\toption_key : "option_value"\n+\t};\n+\t$.jstree.plugins.mapper = function () {\n+\t\tthis._parse_model_from_json = function (d, p, ps) {\n+\t\t\t// d is the node from the server, it will be called recursively for children,\n+\t\t\t// so you do not need to process at once\n+\t\t\t/* // for example\n+\t\t\tfor(var i in d) {\n+\t\t\t\tif(d.hasOwnProperty(i)) {\n+\t\t\t\t\td[i.toLowerCase()] = d[i];\n+\t\t\t\t}\n+\t\t\t}\n+\t\t\t*/\n+\t\t\treturn parent._parse_model_from_json.call(this, d, p, ps);\n+\t\t};\n+\t};\n+})(jQuery);\n+\n+// no hover\n+(function ($, undefined) {\n+\t"use strict";\n+\t$.jstree.plugins.nohover = function () {\n+\t\tthis.hover_node = $.noop;\n+\t};\n+})(jQuery);\n+\n+// force multiple select\n+(function ($, undefined) {\n+\t"use strict";\n+\t$.jstree.defaults.multiselect = {};\n+\t$.jstree.plugins.multiselect = function (options, parent) {\n+\t\tthis.activate_node = function (obj, e) {\n+\t\t\te.ctrlKey = true;\n+\t\t\tparent.activate_node.call(this, obj, e);\n+\t\t};\n+\t};\n+})(jQuery);\n+\n+// real checkboxes\n+(function ($, undefined) {\n+\t"use strict";\n+\n+\tvar inp = document.createElement("INPUT");\n+\tinp.type = "checkbox";\n+\tinp.className = "jstree-checkbox jstree-realcheckbox";\n+\n+\t$.jstree.defaults.realcheckboxes = {};\n+\n+\t$.jstree.plugins.realcheckboxes = function (options, parent) {\n+\t\tthis.bind = function () {\n+\t\t\tparent.bind.call(this);\n+\t\t\tthis._data.realcheckboxes.uto = false;\n+\t\t\tthis.element\n+\t\t\t\t.on(\'changed.jstree uncheck_node.jstree check_node.jstree uncheck_all.jstree check_all.jstree move_node.jstree copy_node.jstree redraw.jstree open_node.jstree ready.jstree loaded.jstree\', $.proxy(function () {\n+\t\t\t\t\t\t// only if undetermined is in setting\n+\t\t\t\t\t\tif(this._data.realcheckboxes.uto) { clearTimeout(this._data.realcheckboxes.uto); }\n+\t\t\t\t\t\tthis._data.realcheckboxes.uto = setTimeout($.proxy(this._realcheckboxes, this), 50);\n+\t\t\t\t\t}, this));\n+\t\t};\n+\t\tthis.redraw_node = function(obj, deep, callback, force_draw) {\n+\t\t\tobj = parent.redraw_node.call(this, obj, deep, callback, force_draw);\n+\t\t\tif(obj) {\n+\t\t\t\tvar i, j, tmp = null, chk = inp.cloneNode(true);\n+\t\t\t\tfor(i = 0, j = obj.childNodes.length; i < j; i++) {\n+\t\t\t\t\tif(obj.childNodes[i] && obj.childNodes[i].className && obj.childNodes[i].className.indexOf("jstree-anchor") !== -1) {\n+\t\t\t\t\t\ttmp = obj.childNodes[i];\n+\t\t\t\t\t\tbreak;\n+\t\t\t\t\t}\n+\t\t\t\t}\n+\t\t\t\tif(tmp) {\n+\t\t\t\t\tfor(i = 0, j = tmp.childNodes.length; i < j; i++) {\n+\t\t\t\t\t\tif(tmp.childNodes[i] && tmp.childNodes[i].className && tmp.childNodes[i].className.indexOf("jstree-checkbox") !== -1) {\n+\t\t\t\t\t\t\ttmp = tmp.childNodes[i];\n+\t\t\t\t\t\t\tbreak;\n+\t\t\t\t\t\t}\n+\t\t\t\t\t}\n+\t\t\t\t}\n+\t\t\t\tif(tmp && tmp.tagName === "I") {\n+\t\t\t\t\ttmp.style.backgroundColor = "transparent";\n+\t\t\t\t\ttmp.style.backgroundImage = "none";\n+\t\t\t\t\ttmp.appendChild(chk);\n+\t\t\t\t}\n+\t\t\t}\n+\t\t\treturn obj;\n+\t\t};\n+\t\tthis._realcheckboxes = function () {\n+\t\t\tvar ts = this.settings.checkbox.tie_selection;\n+\t\t\tconsole.log(ts);\n+\t\t\t$(\'.jstree-realcheckbox\').each(function () {\n+\t\t\t\tthis.checked = (!ts && this.parentNode.parentNode.className.indexOf("jstree-checked") !== -1) || (ts && this.parentNode.parentNode.className.indexOf(\'jstree-clicked\') !== -1);\n+\t\t\t\tthis.indeterminate = this.parentNode.className.indexOf("jstree-undetermined") !== -1;\n+\t\t\t\tthis.disabled = this.parentNode.parentNode.className.indexOf("disabled") '..b'                                        return coreProperty.call(this, node)\n+                                                        } else { // (typeof coreProperty === \'string\')\n+                                                                return coreProperty\n+                                                        }\n+                                                }\n+                                        }\n+                                } /* else {\n+                                        use jstree the same data[propertyName] settings\n+                                }*/\n+                        }\n+\n+                        if($.isFunction(parentsloadSettings)) {\n+                                this.settings.data = parentsloadSettings\n+                        } else if (typeof parentsloadSettings === \'object\') {\n+                                if (! (parentsloadSettings.url || parentsloadSettings.data)) {\n+                                        callError(\'02\', \'The "data.url" or "data.data" must be presented in configuration\')\n+                                        return\n+                                }\n+                                patchSettingsProperty(\'url\')\n+                                patchSettingsProperty(\'data\')\n+\n+                        } else {\n+                                callError(\'03\', \'The appropriate "data.url" or "data.data" must be presented in configuration\')\n+                        }\n+                }\n+\n+                this.load_node = function (obj, callback) {\n+                        if($.isArray(obj)) {\n+                                // FIXME: _load_nodes will not load nodes not presented in the tree\n+                                this._load_nodes(obj.slice(), callback);\n+                                return true;\n+                        }\n+                        var foundObj = this.get_node(obj);\n+                        if (foundObj) {\n+                                return parent.load_node.apply(this, arguments)\n+                        } else {\n+                                // node hasn\'t been loaded\n+                                var id = obj.id? obj.id: obj;\n+                                this._model.data[id] = {\n+                                        id : id,\n+                                        parent : \'#\',\n+                                        parents : [],\n+                                        children : [],\n+                                        children_d : [],\n+                                        state : { loaded : false },\n+                                        li_attr : {},\n+                                        a_attr : {},\n+                                        parentsload_required : true,\n+                                };\n+                                return parent.load_node.call(this, obj, function(obj, status){\n+                                        obj.parentsload_required = !status\n+                                        callback.call(this, obj, status)\n+                                })\n+                        }\n+                }\n+        };\n+}));\n+\n+// conditional deselect\n+(function (factory) {\n+\t"use strict";\n+\tif (typeof define === \'function\' && define.amd) {\n+\t\tdefine(\'jstree.conditionaldeselect\', [\'jquery\',\'jstree\'], factory);\n+\t}\n+\telse if(typeof exports === \'object\') {\n+\t\tfactory(require(\'jquery\'), require(\'jstree\'));\n+\t}\n+\telse {\n+\t\tfactory(jQuery, jQuery.jstree);\n+\t}\n+}(function ($, jstree, undefined) {\n+\t"use strict";\n+\n+\tif($.jstree.plugins.conditionaldeselect) { return; }\n+\t$.jstree.defaults.conditionaldeselect = function () { return true; };\n+\t$.jstree.plugins.conditionaldeselect = function (options, parent) {\n+\t\t// own function\n+\t\tthis.deselect_node = function (obj, supress_event, e) {\n+\t\t\tif(this.settings.conditionaldeselect.call(this, this.get_node(obj), e)) {\n+\t\t\t\treturn parent.deselect_node.call(this, obj, supress_event, e);\n+\t\t\t}\n+\t\t};\n+\t};\n+\n+}));\n\\ No newline at end of file\n'
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/src/outro.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vakata-jstree-3.3.5/src/outro.js Sun Dec 30 13:11:48 2018 -0500
b
@@ -0,0 +1,1 @@
+}));
\ No newline at end of file
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/src/sample.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vakata-jstree-3.3.5/src/sample.js Sun Dec 30 13:11:48 2018 -0500
[
@@ -0,0 +1,93 @@
+/*global jQuery */
+// wrap in IIFE and pass jQuery as $
+(function ($, undefined) {
+ "use strict";
+
+ // some private plugin stuff if needed
+ var private_var = null;
+
+ // extending the defaults
+ $.jstree.defaults.sample = {
+ sample_option : 'sample_val'
+ };
+
+ // the actual plugin code
+ $.jstree.plugins.sample = function (options, parent) {
+ // own function
+ this.sample_function = function (arg) {
+ // you can chain this method if needed and available
+ if(parent.sample_function) { parent.sample_function.call(this, arg); }
+ };
+
+ // *SPECIAL* FUNCTIONS
+ this.init = function (el, options) {
+ // do not forget parent
+ parent.init.call(this, el, options);
+ };
+ // bind events if needed
+ this.bind = function () {
+ // call parent function first
+ parent.bind.call(this);
+ // do(stuff);
+ };
+ // unbind events if needed (all in jquery namespace are taken care of by the core)
+ this.unbind = function () {
+ // do(stuff);
+ // call parent function last
+ parent.unbind.call(this);
+ };
+ this.teardown = function () {
+ // do not forget parent
+ parent.teardown.call(this);
+ };
+ // state management - get and restore
+ this.get_state = function () {
+ // always get state from parent first
+ var state = parent.get_state.call(this);
+ // add own stuff to state
+ state.sample = { 'var' : 'val' };
+ return state;
+ };
+ this.set_state = function (state, callback) {
+ // only process your part if parent returns true
+ // there will be multiple times with false
+ if(parent.set_state.call(this, state, callback)) {
+ // check the key you set above
+ if(state.sample) {
+ // do(stuff); // like calling this.sample_function(state.sample.var);
+ // remove your part of the state, call again and RETURN FALSE, the next cycle will be TRUE
+ delete state.sample;
+ this.set_state(state, callback);
+ return false;
+ }
+ // return true if your state is gone (cleared in the previous step)
+ return true;
+ }
+ // parent was false - return false too
+ return false;
+ };
+ // node transportation
+ this.get_json = function (obj, options, flat) {
+ // get the node from the parent
+ var tmp = parent.get_json.call(this, obj, options, flat), i, j;
+ if($.isArray(tmp)) {
+ for(i = 0, j = tmp.length; i < j; i++) {
+ tmp[i].sample = 'value';
+ }
+ }
+ else {
+ tmp.sample = 'value';
+ }
+ // return the original / modified node
+ return tmp;
+ };
+ };
+
+ // attach to document ready if needed
+ $(function () {
+ // do(stuff);
+ });
+
+ // you can include the sample plugin in all instances by default
+ $.jstree.defaults.plugins.push("sample");
+})(jQuery);
\ No newline at end of file
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/src/themes/base.less
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vakata-jstree-3.3.5/src/themes/base.less Sun Dec 30 13:11:48 2018 -0500
b
@@ -0,0 +1,92 @@
+// base jstree
+.jstree-node, .jstree-children, .jstree-container-ul { display:block; margin:0; padding:0; list-style-type:none; list-style-image:none; }
+.jstree-node { white-space:nowrap; }
+.jstree-anchor { display:inline-block; color:black; white-space:nowrap; padding:0 4px 0 1px; margin:0; vertical-align:top; }
+.jstree-anchor:focus { outline:0; }
+.jstree-anchor, .jstree-anchor:link, .jstree-anchor:visited, .jstree-anchor:hover, .jstree-anchor:active { text-decoration:none; color:inherit; }
+.jstree-icon { display:inline-block; text-decoration:none; margin:0; padding:0; vertical-align:top; text-align:center; }
+.jstree-icon:empty { display:inline-block; text-decoration:none; margin:0; padding:0; vertical-align:top; text-align:center; }
+.jstree-ocl { cursor:pointer; }
+.jstree-leaf > .jstree-ocl { cursor:default; }
+.jstree .jstree-open > .jstree-children { display:block; }
+.jstree .jstree-closed > .jstree-children,
+.jstree .jstree-leaf > .jstree-children { display:none; }
+.jstree-anchor > .jstree-themeicon { margin-right:2px; }
+.jstree-no-icons .jstree-themeicon,
+.jstree-anchor > .jstree-themeicon-hidden { display:none; }
+.jstree-hidden, .jstree-node.jstree-hidden { display:none; }
+
+// base jstree rtl
+.jstree-rtl {
+ .jstree-anchor { padding:0 1px 0 4px; }
+ .jstree-anchor > .jstree-themeicon { margin-left:2px; margin-right:0; }
+ .jstree-node { margin-left:0; }
+ .jstree-container-ul > .jstree-node { margin-right:0; }
+}
+
+// base jstree wholerow
+.jstree-wholerow-ul {
+ position:relative;
+ display:inline-block;
+ min-width:100%;
+ .jstree-leaf > .jstree-ocl { cursor:pointer; }
+ .jstree-anchor, .jstree-icon { position:relative; }
+ .jstree-wholerow { width:100%; cursor:pointer; position:absolute; left:0; -webkit-user-select:none; -moz-user-select:none; -ms-user-select:none; user-select:none; }
+}
+
+// base contextmenu
+.jstree-contextmenu .jstree-anchor {
+ -webkit-user-select: none; /* disable selection/Copy of UIWebView */
+ -webkit-touch-callout: none; /* disable the IOS popup when long-press on a link */
+}
+.vakata-context {
+ display:none;
+ &, ul { margin:0; padding:2px; position:absolute; background:#f5f5f5; border:1px solid #979797; box-shadow:2px 2px 2px #999999; }
+ ul { list-style:none; left:100%; margin-top:-2.7em; margin-left:-4px; }
+ .vakata-context-right ul { left:auto; right:100%; margin-left:auto; margin-right:-4px; }
+ li {
+ list-style:none;
+ > a {
+ display:block; padding:0 2em 0 2em; text-decoration:none; width:auto; color:black; white-space:nowrap; line-height:2.4em; text-shadow:1px 1px 0 white; border-radius:1px;
+ &:hover { position:relative; background-color:#e8eff7; box-shadow:0 0 2px #0a6aa1; }
+ &.vakata-context-parent { background-image:url("data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAIORI4JlrqN1oMSnmmZDQUAOw=="); background-position:right center; background-repeat:no-repeat; }
+ }
+ > a:focus { outline:0; }
+ }
+ .vakata-context-hover > a { position:relative; background-color:#e8eff7; box-shadow:0 0 2px #0a6aa1; }
+ .vakata-context-separator {
+ > a, > a:hover { background:white; border:0; border-top:1px solid #e2e3e3; height:1px; min-height:1px; max-height:1px; padding:0; margin:0 0 0 2.4em; border-left:1px solid #e0e0e0; text-shadow:0 0 0 transparent; box-shadow:0 0 0 transparent; border-radius:0; }
+ }
+ .vakata-contextmenu-disabled {
+ a, a:hover { color:silver; background-color:transparent; border:0; box-shadow:0 0 0; }
+ }
+ li > a {
+ > i { text-decoration:none; display:inline-block; width:2.4em; height:2.4em; background:transparent; margin:0 0 0 -2em; vertical-align:top; text-align:center; line-height:2.4em; }
+ > i:empty { width:2.4em; line-height:2.4em; }
+ .vakata-contextmenu-sep { display:inline-block; width:1px; height:2.4em; background:white; margin:0 0.5em 0 0; border-left:1px solid #e2e3e3; }
+ }
+ .vakata-contextmenu-shortcut { font-size:0.8em; color:silver; opacity:0.5; display:none; }
+}
+.vakata-context-rtl {
+ ul { left:auto; right:100%; margin-left:auto; margin-right:-4px; }
+ li > a.vakata-context-parent { background-image:url("data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAINjI+AC7rWHIsPtmoxLAA7"); background-position:left center; background-repeat:no-repeat; }
+ .vakata-context-separator > a { margin:0 2.4em 0 0; border-left:0; border-right:1px solid #e2e3e3;}
+ .vakata-context-left ul { right:auto; left:100%; margin-left:-4px; margin-right:auto; }
+ li > a {
+ > i { margin:0 -2em 0 0; }
+ .vakata-contextmenu-sep { margin:0 0 0 0.5em; border-left-color:white; background:#e2e3e3; }
+ }
+}
+
+// base drag'n'drop
+#jstree-marker { position: absolute; top:0; left:0; margin:-5px 0 0 0; padding:0; border-right:0; border-top:5px solid transparent; border-bottom:5px solid transparent; border-left:5px solid; width:0; height:0; font-size:0; line-height:0; }
+#jstree-dnd {
+ line-height:16px;
+ margin:0;
+ padding:4px;
+ .jstree-icon,
+ .jstree-copy { display:inline-block; text-decoration:none; margin:0 2px 0 0; padding:0; width:16px; height:16px; }
+ .jstree-ok { background:green; }
+ .jstree-er { background:red; }
+ .jstree-copy { margin:0 2px 0 2px; }
+}
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/src/themes/default-dark/32px.png
b
Binary file vakata-jstree-3.3.5/src/themes/default-dark/32px.png has changed
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/src/themes/default-dark/40px.png
b
Binary file vakata-jstree-3.3.5/src/themes/default-dark/40px.png has changed
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/src/themes/default-dark/style.css
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vakata-jstree-3.3.5/src/themes/default-dark/style.css Sun Dec 30 13:11:48 2018 -0500
b
b'@@ -0,0 +1,1152 @@\n+/* jsTree default dark theme */\n+.jstree-node,\n+.jstree-children,\n+.jstree-container-ul {\n+  display: block;\n+  margin: 0;\n+  padding: 0;\n+  list-style-type: none;\n+  list-style-image: none;\n+}\n+.jstree-node {\n+  white-space: nowrap;\n+}\n+.jstree-anchor {\n+  display: inline-block;\n+  color: black;\n+  white-space: nowrap;\n+  padding: 0 4px 0 1px;\n+  margin: 0;\n+  vertical-align: top;\n+}\n+.jstree-anchor:focus {\n+  outline: 0;\n+}\n+.jstree-anchor,\n+.jstree-anchor:link,\n+.jstree-anchor:visited,\n+.jstree-anchor:hover,\n+.jstree-anchor:active {\n+  text-decoration: none;\n+  color: inherit;\n+}\n+.jstree-icon {\n+  display: inline-block;\n+  text-decoration: none;\n+  margin: 0;\n+  padding: 0;\n+  vertical-align: top;\n+  text-align: center;\n+}\n+.jstree-icon:empty {\n+  display: inline-block;\n+  text-decoration: none;\n+  margin: 0;\n+  padding: 0;\n+  vertical-align: top;\n+  text-align: center;\n+}\n+.jstree-ocl {\n+  cursor: pointer;\n+}\n+.jstree-leaf > .jstree-ocl {\n+  cursor: default;\n+}\n+.jstree .jstree-open > .jstree-children {\n+  display: block;\n+}\n+.jstree .jstree-closed > .jstree-children,\n+.jstree .jstree-leaf > .jstree-children {\n+  display: none;\n+}\n+.jstree-anchor > .jstree-themeicon {\n+  margin-right: 2px;\n+}\n+.jstree-no-icons .jstree-themeicon,\n+.jstree-anchor > .jstree-themeicon-hidden {\n+  display: none;\n+}\n+.jstree-hidden,\n+.jstree-node.jstree-hidden {\n+  display: none;\n+}\n+.jstree-rtl .jstree-anchor {\n+  padding: 0 1px 0 4px;\n+}\n+.jstree-rtl .jstree-anchor > .jstree-themeicon {\n+  margin-left: 2px;\n+  margin-right: 0;\n+}\n+.jstree-rtl .jstree-node {\n+  margin-left: 0;\n+}\n+.jstree-rtl .jstree-container-ul > .jstree-node {\n+  margin-right: 0;\n+}\n+.jstree-wholerow-ul {\n+  position: relative;\n+  display: inline-block;\n+  min-width: 100%;\n+}\n+.jstree-wholerow-ul .jstree-leaf > .jstree-ocl {\n+  cursor: pointer;\n+}\n+.jstree-wholerow-ul .jstree-anchor,\n+.jstree-wholerow-ul .jstree-icon {\n+  position: relative;\n+}\n+.jstree-wholerow-ul .jstree-wholerow {\n+  width: 100%;\n+  cursor: pointer;\n+  position: absolute;\n+  left: 0;\n+  -webkit-user-select: none;\n+  -moz-user-select: none;\n+  -ms-user-select: none;\n+  user-select: none;\n+}\n+.jstree-contextmenu .jstree-anchor {\n+  -webkit-user-select: none;\n+  /* disable selection/Copy of UIWebView */\n+  -webkit-touch-callout: none;\n+  /* disable the IOS popup when long-press on a link */\n+}\n+.vakata-context {\n+  display: none;\n+}\n+.vakata-context,\n+.vakata-context ul {\n+  margin: 0;\n+  padding: 2px;\n+  position: absolute;\n+  background: #f5f5f5;\n+  border: 1px solid #979797;\n+  box-shadow: 2px 2px 2px #999999;\n+}\n+.vakata-context ul {\n+  list-style: none;\n+  left: 100%;\n+  margin-top: -2.7em;\n+  margin-left: -4px;\n+}\n+.vakata-context .vakata-context-right ul {\n+  left: auto;\n+  right: 100%;\n+  margin-left: auto;\n+  margin-right: -4px;\n+}\n+.vakata-context li {\n+  list-style: none;\n+}\n+.vakata-context li > a {\n+  display: block;\n+  padding: 0 2em 0 2em;\n+  text-decoration: none;\n+  width: auto;\n+  color: black;\n+  white-space: nowrap;\n+  line-height: 2.4em;\n+  text-shadow: 1px 1px 0 white;\n+  border-radius: 1px;\n+}\n+.vakata-context li > a:hover {\n+  position: relative;\n+  background-color: #e8eff7;\n+  box-shadow: 0 0 2px #0a6aa1;\n+}\n+.vakata-context li > a.vakata-context-parent {\n+  background-image: url("data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAIORI4JlrqN1oMSnmmZDQUAOw==");\n+  background-position: right center;\n+  background-repeat: no-repeat;\n+}\n+.vakata-context li > a:focus {\n+  outline: 0;\n+}\n+.vakata-context .vakata-context-hover > a {\n+  position: relative;\n+  background-color: #e8eff7;\n+  box-shadow: 0 0 2px #0a6aa1;\n+}\n+.vakata-context .vakata-context-separator > a,\n+.vakata-context .vakata-context-separator > a:hover {\n+  background: white;\n+  border: 0;\n+  border-top: 1px solid #e2e3e3;\n+  height: 1px;\n+  min-height: 1px;\n+  max-height: 1px;\n+  padding: 0;\n+  margin: 0 0 0 2.4em;\n+  border-left: 1px solid #e0e0e0;\n+  text-shadow: 0 0 0 transpare'..b'}\n+  .jstree-default-dark-responsive .jstree-anchor {\n+    font-weight: bold;\n+    font-size: 1.1em;\n+    text-shadow: 1px 1px white;\n+  }\n+  .jstree-default-dark-responsive > .jstree-striped {\n+    background: transparent;\n+  }\n+  .jstree-default-dark-responsive .jstree-wholerow {\n+    border-top: 1px solid #666666;\n+    border-bottom: 1px solid #000000;\n+    background: #333333;\n+    height: 40px;\n+  }\n+  .jstree-default-dark-responsive .jstree-wholerow-hovered {\n+    background: #555555;\n+  }\n+  .jstree-default-dark-responsive .jstree-wholerow-clicked {\n+    background: #5fa2db;\n+  }\n+  .jstree-default-dark-responsive .jstree-children .jstree-last > .jstree-wholerow {\n+    box-shadow: inset 0 -6px 3px -5px #111111;\n+  }\n+  .jstree-default-dark-responsive .jstree-children .jstree-open > .jstree-wholerow {\n+    box-shadow: inset 0 6px 3px -5px #111111;\n+    border-top: 0;\n+  }\n+  .jstree-default-dark-responsive .jstree-children .jstree-open + .jstree-open {\n+    box-shadow: none;\n+  }\n+  .jstree-default-dark-responsive .jstree-node,\n+  .jstree-default-dark-responsive .jstree-icon,\n+  .jstree-default-dark-responsive .jstree-node > .jstree-ocl,\n+  .jstree-default-dark-responsive .jstree-themeicon,\n+  .jstree-default-dark-responsive .jstree-checkbox {\n+    background-image: url("40px.png");\n+    background-size: 120px 240px;\n+  }\n+  .jstree-default-dark-responsive .jstree-node {\n+    background-position: -80px 0;\n+    background-repeat: repeat-y;\n+  }\n+  .jstree-default-dark-responsive .jstree-last {\n+    background: transparent;\n+  }\n+  .jstree-default-dark-responsive .jstree-leaf > .jstree-ocl {\n+    background-position: -40px -120px;\n+  }\n+  .jstree-default-dark-responsive .jstree-last > .jstree-ocl {\n+    background-position: -40px -160px;\n+  }\n+  .jstree-default-dark-responsive .jstree-themeicon-custom {\n+    background-color: transparent;\n+    background-image: none;\n+    background-position: 0 0;\n+  }\n+  .jstree-default-dark-responsive .jstree-file {\n+    background: url("40px.png") 0 -160px no-repeat;\n+    background-size: 120px 240px;\n+  }\n+  .jstree-default-dark-responsive .jstree-folder {\n+    background: url("40px.png") -40px -40px no-repeat;\n+    background-size: 120px 240px;\n+  }\n+  .jstree-default-dark-responsive > .jstree-container-ul > .jstree-node {\n+    margin-left: 0;\n+    margin-right: 0;\n+  }\n+}\n+.jstree-default-dark {\n+  background: #333;\n+}\n+.jstree-default-dark .jstree-anchor {\n+  color: #999;\n+  text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.5);\n+}\n+.jstree-default-dark .jstree-clicked,\n+.jstree-default-dark .jstree-checked {\n+  color: white;\n+}\n+.jstree-default-dark .jstree-hovered {\n+  color: white;\n+}\n+#jstree-marker.jstree-default-dark {\n+  border-left-color: #999;\n+  background: transparent;\n+}\n+.jstree-default-dark .jstree-anchor > .jstree-icon {\n+  opacity: 0.75;\n+}\n+.jstree-default-dark .jstree-clicked > .jstree-icon,\n+.jstree-default-dark .jstree-hovered > .jstree-icon,\n+.jstree-default-dark .jstree-checked > .jstree-icon {\n+  opacity: 1;\n+}\n+.jstree-default-dark.jstree-rtl .jstree-node {\n+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAACZmZl+9SADAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==");\n+}\n+.jstree-default-dark.jstree-rtl .jstree-last {\n+  background: transparent;\n+}\n+.jstree-default-dark-small.jstree-rtl .jstree-node {\n+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAACAQMAAABv1h6PAAAABlBMVEUAAACZmZl+9SADAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMHBgAAiABBI4gz9AAAAABJRU5ErkJggg==");\n+}\n+.jstree-default-dark-small.jstree-rtl .jstree-last {\n+  background: transparent;\n+}\n+.jstree-default-dark-large.jstree-rtl .jstree-node {\n+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAACAQMAAAAD0EyKAAAABlBMVEUAAACZmZl+9SADAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjgIIGBgABCgCBvVLXcAAAAABJRU5ErkJggg==");\n+}\n+.jstree-default-dark-large.jstree-rtl .jstree-last {\n+  background: transparent;\n+}\n'
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/src/themes/default-dark/style.less
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vakata-jstree-3.3.5/src/themes/default-dark/style.less Sun Dec 30 13:11:48 2018 -0500
b
@@ -0,0 +1,50 @@
+/* jsTree default dark theme */
+@theme-name: default-dark;
+@hovered-bg-color: #555;
+@hovered-shadow-color: #555;
+@disabled-color: #666666;
+@disabled-bg-color: #333333;
+@clicked-bg-color: #5fa2db;
+@clicked-shadow-color: #666666;
+@clicked-gradient-color-1: #5fa2db;
+@clicked-gradient-color-2: #5fa2db;
+@search-result-color: #ffffff;
+@mobile-wholerow-bg-color: #333333;
+@mobile-wholerow-shadow: #111111;
+@mobile-wholerow-bordert: #666;
+@mobile-wholerow-borderb: #000;
+@responsive: true;
+@image-path: "";
+@base-height: 40px;
+
+@import "../mixins.less";
+@import "../base.less";
+@import "../main.less";
+
+.jstree-@{theme-name} {
+ background:#333;
+ .jstree-anchor { color:#999; text-shadow:1px 1px 0 rgba(0,0,0,0.5); }
+ .jstree-clicked, .jstree-checked { color:white; }
+ .jstree-hovered { color:white; }
+ #jstree-marker& {
+ border-left-color:#999;
+ background:transparent;
+ }
+ .jstree-anchor > .jstree-icon { opacity:0.75; }
+ .jstree-clicked > .jstree-icon,
+ .jstree-hovered > .jstree-icon,
+ .jstree-checked > .jstree-icon { opacity:1; }
+}
+// theme variants
+.jstree-@{theme-name} {
+ &.jstree-rtl .jstree-node { background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAACZmZl+9SADAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg=="); }
+ &.jstree-rtl .jstree-last { background:transparent; }
+}
+.jstree-@{theme-name}-small {
+ &.jstree-rtl .jstree-node { background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAACAQMAAABv1h6PAAAABlBMVEUAAACZmZl+9SADAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMHBgAAiABBI4gz9AAAAABJRU5ErkJggg=="); }
+ &.jstree-rtl .jstree-last { background:transparent; }
+}
+.jstree-@{theme-name}-large {
+ &.jstree-rtl .jstree-node { background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAACAQMAAAAD0EyKAAAABlBMVEUAAACZmZl+9SADAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjgIIGBgABCgCBvVLXcAAAAABJRU5ErkJggg=="); }
+ &.jstree-rtl .jstree-last { background:transparent; }
+}
\ No newline at end of file
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/src/themes/default-dark/throbber.gif
b
Binary file vakata-jstree-3.3.5/src/themes/default-dark/throbber.gif has changed
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/src/themes/default/32px.png
b
Binary file vakata-jstree-3.3.5/src/themes/default/32px.png has changed
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/src/themes/default/40px.png
b
Binary file vakata-jstree-3.3.5/src/themes/default/40px.png has changed
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/src/themes/default/style.css
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vakata-jstree-3.3.5/src/themes/default/style.css Sun Dec 30 13:11:48 2018 -0500
b
b'@@ -0,0 +1,1108 @@\n+/* jsTree default theme */\n+.jstree-node,\n+.jstree-children,\n+.jstree-container-ul {\n+  display: block;\n+  margin: 0;\n+  padding: 0;\n+  list-style-type: none;\n+  list-style-image: none;\n+}\n+.jstree-node {\n+  white-space: nowrap;\n+}\n+.jstree-anchor {\n+  display: inline-block;\n+  color: black;\n+  white-space: nowrap;\n+  padding: 0 4px 0 1px;\n+  margin: 0;\n+  vertical-align: top;\n+}\n+.jstree-anchor:focus {\n+  outline: 0;\n+}\n+.jstree-anchor,\n+.jstree-anchor:link,\n+.jstree-anchor:visited,\n+.jstree-anchor:hover,\n+.jstree-anchor:active {\n+  text-decoration: none;\n+  color: inherit;\n+}\n+.jstree-icon {\n+  display: inline-block;\n+  text-decoration: none;\n+  margin: 0;\n+  padding: 0;\n+  vertical-align: top;\n+  text-align: center;\n+}\n+.jstree-icon:empty {\n+  display: inline-block;\n+  text-decoration: none;\n+  margin: 0;\n+  padding: 0;\n+  vertical-align: top;\n+  text-align: center;\n+}\n+.jstree-ocl {\n+  cursor: pointer;\n+}\n+.jstree-leaf > .jstree-ocl {\n+  cursor: default;\n+}\n+.jstree .jstree-open > .jstree-children {\n+  display: block;\n+}\n+.jstree .jstree-closed > .jstree-children,\n+.jstree .jstree-leaf > .jstree-children {\n+  display: none;\n+}\n+.jstree-anchor > .jstree-themeicon {\n+  margin-right: 2px;\n+}\n+.jstree-no-icons .jstree-themeicon,\n+.jstree-anchor > .jstree-themeicon-hidden {\n+  display: none;\n+}\n+.jstree-hidden,\n+.jstree-node.jstree-hidden {\n+  display: none;\n+}\n+.jstree-rtl .jstree-anchor {\n+  padding: 0 1px 0 4px;\n+}\n+.jstree-rtl .jstree-anchor > .jstree-themeicon {\n+  margin-left: 2px;\n+  margin-right: 0;\n+}\n+.jstree-rtl .jstree-node {\n+  margin-left: 0;\n+}\n+.jstree-rtl .jstree-container-ul > .jstree-node {\n+  margin-right: 0;\n+}\n+.jstree-wholerow-ul {\n+  position: relative;\n+  display: inline-block;\n+  min-width: 100%;\n+}\n+.jstree-wholerow-ul .jstree-leaf > .jstree-ocl {\n+  cursor: pointer;\n+}\n+.jstree-wholerow-ul .jstree-anchor,\n+.jstree-wholerow-ul .jstree-icon {\n+  position: relative;\n+}\n+.jstree-wholerow-ul .jstree-wholerow {\n+  width: 100%;\n+  cursor: pointer;\n+  position: absolute;\n+  left: 0;\n+  -webkit-user-select: none;\n+  -moz-user-select: none;\n+  -ms-user-select: none;\n+  user-select: none;\n+}\n+.jstree-contextmenu .jstree-anchor {\n+  -webkit-user-select: none;\n+  /* disable selection/Copy of UIWebView */\n+  -webkit-touch-callout: none;\n+  /* disable the IOS popup when long-press on a link */\n+}\n+.vakata-context {\n+  display: none;\n+}\n+.vakata-context,\n+.vakata-context ul {\n+  margin: 0;\n+  padding: 2px;\n+  position: absolute;\n+  background: #f5f5f5;\n+  border: 1px solid #979797;\n+  box-shadow: 2px 2px 2px #999999;\n+}\n+.vakata-context ul {\n+  list-style: none;\n+  left: 100%;\n+  margin-top: -2.7em;\n+  margin-left: -4px;\n+}\n+.vakata-context .vakata-context-right ul {\n+  left: auto;\n+  right: 100%;\n+  margin-left: auto;\n+  margin-right: -4px;\n+}\n+.vakata-context li {\n+  list-style: none;\n+}\n+.vakata-context li > a {\n+  display: block;\n+  padding: 0 2em 0 2em;\n+  text-decoration: none;\n+  width: auto;\n+  color: black;\n+  white-space: nowrap;\n+  line-height: 2.4em;\n+  text-shadow: 1px 1px 0 white;\n+  border-radius: 1px;\n+}\n+.vakata-context li > a:hover {\n+  position: relative;\n+  background-color: #e8eff7;\n+  box-shadow: 0 0 2px #0a6aa1;\n+}\n+.vakata-context li > a.vakata-context-parent {\n+  background-image: url("data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAIORI4JlrqN1oMSnmmZDQUAOw==");\n+  background-position: right center;\n+  background-repeat: no-repeat;\n+}\n+.vakata-context li > a:focus {\n+  outline: 0;\n+}\n+.vakata-context .vakata-context-hover > a {\n+  position: relative;\n+  background-color: #e8eff7;\n+  box-shadow: 0 0 2px #0a6aa1;\n+}\n+.vakata-context .vakata-context-separator > a,\n+.vakata-context .vakata-context-separator > a:hover {\n+  background: white;\n+  border: 0;\n+  border-top: 1px solid #e2e3e3;\n+  height: 1px;\n+  min-height: 1px;\n+  max-height: 1px;\n+  padding: 0;\n+  margin: 0 0 0 2.4em;\n+  border-left: 1px solid #e0e0e0;\n+  text-shadow: 0 0 0 transparent;\n+'..b'-default-responsive.jstree-rtl .jstree-node {\n+    margin-left: 0;\n+    margin-right: 40px;\n+    background: transparent;\n+  }\n+  .jstree-default-responsive.jstree-rtl .jstree-container-ul > .jstree-node {\n+    margin-right: 0;\n+  }\n+  .jstree-default-responsive .jstree-ocl,\n+  .jstree-default-responsive .jstree-themeicon,\n+  .jstree-default-responsive .jstree-checkbox {\n+    background-size: 120px 240px;\n+  }\n+  .jstree-default-responsive .jstree-leaf > .jstree-ocl,\n+  .jstree-default-responsive.jstree-rtl .jstree-leaf > .jstree-ocl {\n+    background: transparent;\n+  }\n+  .jstree-default-responsive .jstree-open > .jstree-ocl {\n+    background-position: 0 0px !important;\n+  }\n+  .jstree-default-responsive .jstree-closed > .jstree-ocl {\n+    background-position: 0 -40px !important;\n+  }\n+  .jstree-default-responsive.jstree-rtl .jstree-closed > .jstree-ocl {\n+    background-position: -40px 0px !important;\n+  }\n+  .jstree-default-responsive .jstree-themeicon {\n+    background-position: -40px -40px;\n+  }\n+  .jstree-default-responsive .jstree-checkbox,\n+  .jstree-default-responsive .jstree-checkbox:hover {\n+    background-position: -40px -80px;\n+  }\n+  .jstree-default-responsive.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox,\n+  .jstree-default-responsive.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox:hover,\n+  .jstree-default-responsive .jstree-checked > .jstree-checkbox,\n+  .jstree-default-responsive .jstree-checked > .jstree-checkbox:hover {\n+    background-position: 0 -80px;\n+  }\n+  .jstree-default-responsive .jstree-anchor > .jstree-undetermined,\n+  .jstree-default-responsive .jstree-anchor > .jstree-undetermined:hover {\n+    background-position: 0 -120px;\n+  }\n+  .jstree-default-responsive .jstree-anchor {\n+    font-weight: bold;\n+    font-size: 1.1em;\n+    text-shadow: 1px 1px white;\n+  }\n+  .jstree-default-responsive > .jstree-striped {\n+    background: transparent;\n+  }\n+  .jstree-default-responsive .jstree-wholerow {\n+    border-top: 1px solid rgba(255, 255, 255, 0.7);\n+    border-bottom: 1px solid rgba(64, 64, 64, 0.2);\n+    background: #ebebeb;\n+    height: 40px;\n+  }\n+  .jstree-default-responsive .jstree-wholerow-hovered {\n+    background: #e7f4f9;\n+  }\n+  .jstree-default-responsive .jstree-wholerow-clicked {\n+    background: #beebff;\n+  }\n+  .jstree-default-responsive .jstree-children .jstree-last > .jstree-wholerow {\n+    box-shadow: inset 0 -6px 3px -5px #666666;\n+  }\n+  .jstree-default-responsive .jstree-children .jstree-open > .jstree-wholerow {\n+    box-shadow: inset 0 6px 3px -5px #666666;\n+    border-top: 0;\n+  }\n+  .jstree-default-responsive .jstree-children .jstree-open + .jstree-open {\n+    box-shadow: none;\n+  }\n+  .jstree-default-responsive .jstree-node,\n+  .jstree-default-responsive .jstree-icon,\n+  .jstree-default-responsive .jstree-node > .jstree-ocl,\n+  .jstree-default-responsive .jstree-themeicon,\n+  .jstree-default-responsive .jstree-checkbox {\n+    background-image: url("40px.png");\n+    background-size: 120px 240px;\n+  }\n+  .jstree-default-responsive .jstree-node {\n+    background-position: -80px 0;\n+    background-repeat: repeat-y;\n+  }\n+  .jstree-default-responsive .jstree-last {\n+    background: transparent;\n+  }\n+  .jstree-default-responsive .jstree-leaf > .jstree-ocl {\n+    background-position: -40px -120px;\n+  }\n+  .jstree-default-responsive .jstree-last > .jstree-ocl {\n+    background-position: -40px -160px;\n+  }\n+  .jstree-default-responsive .jstree-themeicon-custom {\n+    background-color: transparent;\n+    background-image: none;\n+    background-position: 0 0;\n+  }\n+  .jstree-default-responsive .jstree-file {\n+    background: url("40px.png") 0 -160px no-repeat;\n+    background-size: 120px 240px;\n+  }\n+  .jstree-default-responsive .jstree-folder {\n+    background: url("40px.png") -40px -40px no-repeat;\n+    background-size: 120px 240px;\n+  }\n+  .jstree-default-responsive > .jstree-container-ul > .jstree-node {\n+    margin-left: 0;\n+    margin-right: 0;\n+  }\n+}\n'
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/src/themes/default/style.less
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vakata-jstree-3.3.5/src/themes/default/style.less Sun Dec 30 13:11:48 2018 -0500
b
@@ -0,0 +1,22 @@
+/* jsTree default theme */
+@theme-name: default;
+@hovered-bg-color: #e7f4f9;
+@hovered-shadow-color: #cccccc;
+@disabled-color: #666666;
+@disabled-bg-color: #efefef;
+@clicked-bg-color: #beebff;
+@clicked-shadow-color: #999999;
+@clicked-gradient-color-1: #beebff;
+@clicked-gradient-color-2: #a8e4ff;
+@search-result-color: #8b0000;
+@mobile-wholerow-bg-color: #ebebeb;
+@mobile-wholerow-shadow: #666666;
+@mobile-wholerow-bordert: rgba(255,255,255,0.7);
+@mobile-wholerow-borderb: rgba(64,64,64,0.2);
+@responsive: true;
+@image-path: "";
+@base-height: 40px;
+
+@import "../mixins.less";
+@import "../base.less";
+@import "../main.less";
\ No newline at end of file
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/src/themes/default/throbber.gif
b
Binary file vakata-jstree-3.3.5/src/themes/default/throbber.gif has changed
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/src/themes/main.less
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vakata-jstree-3.3.5/src/themes/main.less Sun Dec 30 13:11:48 2018 -0500
b
@@ -0,0 +1,77 @@
+.jstree-@{theme-name} {
+ .jstree-node,
+ .jstree-icon { background-repeat:no-repeat; background-color:transparent; }
+ .jstree-anchor,
+ .jstree-animated,
+ .jstree-wholerow { transition:background-color 0.15s, box-shadow 0.15s; }
+ .jstree-hovered { background:@hovered-bg-color; border-radius:2px; box-shadow:inset 0 0 1px @hovered-shadow-color; }
+ .jstree-context { background:@hovered-bg-color; border-radius:2px; box-shadow:inset 0 0 1px @hovered-shadow-color; }
+ .jstree-clicked { background:@clicked-bg-color; border-radius:2px; box-shadow:inset 0 0 1px @clicked-shadow-color; }
+ .jstree-no-icons .jstree-anchor > .jstree-themeicon { display:none; }
+ .jstree-disabled {
+ background:transparent; color:@disabled-color;
+ &.jstree-hovered { background:transparent; box-shadow:none; }
+ &.jstree-clicked { background:@disabled-bg-color; }
+ > .jstree-icon { opacity:0.8; filter: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'jstree-grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#jstree-grayscale"); /* Firefox 10+ */ filter: gray; /* IE6-9 */ -webkit-filter: grayscale(100%); /* Chrome 19+ & Safari 6+ */ }
+ }
+ // search
+ .jstree-search { font-style:italic; color:@search-result-color; font-weight:bold; }
+ // checkboxes
+ .jstree-no-checkboxes .jstree-checkbox { display:none !important; }
+ &.jstree-checkbox-no-clicked {
+ .jstree-clicked {
+ background:transparent;
+ box-shadow:none;
+ &.jstree-hovered { background:@hovered-bg-color; }
+ }
+ > .jstree-wholerow-ul .jstree-wholerow-clicked {
+ background:transparent;
+ &.jstree-wholerow-hovered { background:@hovered-bg-color; }
+ }
+ }
+ // stripes
+ > .jstree-striped { min-width:100%; display:inline-block; background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAkCAMAAAB/qqA+AAAABlBMVEUAAAAAAAClZ7nPAAAAAnRSTlMNAMM9s3UAAAAXSURBVHjajcEBAQAAAIKg/H/aCQZ70AUBjAATb6YPDgAAAABJRU5ErkJggg==") left top repeat; }
+ // wholerow
+ > .jstree-wholerow-ul .jstree-hovered,
+ > .jstree-wholerow-ul .jstree-clicked { background:transparent; box-shadow:none; border-radius:0; }
+ .jstree-wholerow { -moz-box-sizing:border-box; -webkit-box-sizing:border-box; box-sizing:border-box; }
+ .jstree-wholerow-hovered { background:@hovered-bg-color; }
+ .jstree-wholerow-clicked { .gradient(@clicked-gradient-color-1, @clicked-gradient-color-2); }
+}
+
+// theme variants
+.jstree-@{theme-name} {
+ .jstree-theme(24px, "@{image-path}32px.png", 32px);
+ &.jstree-rtl .jstree-node { background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg=="); }
+ &.jstree-rtl .jstree-last { background:transparent; }
+}
+.jstree-@{theme-name}-small {
+ .jstree-theme(18px, "@{image-path}32px.png", 32px);
+ &.jstree-rtl .jstree-node { background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAACAQMAAABv1h6PAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMHBgAAiABBI4gz9AAAAABJRU5ErkJggg=="); }
+ &.jstree-rtl .jstree-last { background:transparent; }
+}
+.jstree-@{theme-name}-large {
+ .jstree-theme(32px, "@{image-path}32px.png", 32px);
+ &.jstree-rtl .jstree-node { background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAACAQMAAAAD0EyKAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjgIIGBgABCgCBvVLXcAAAAABJRU5ErkJggg=="); }
+ &.jstree-rtl .jstree-last { background:transparent; }
+}
+
+// mobile theme attempt
+@media (max-width: 768px) {
+ #jstree-dnd.jstree-dnd-responsive when (@responsive = true) {
+ line-height:@base-height; font-weight:bold; font-size:1.1em; text-shadow:1px 1px white;
+ > i { background:transparent; width:@base-height; height:@base-height; }
+ > .jstree-ok { background-image:url("@{image-path}@{base-height}.png"); background-position:0 -(@base-height * 5); background-size:(@base-height * 3) (@base-height * 6); }
+ > .jstree-er { background-image:url("@{image-path}@{base-height}.png"); background-position:-(@base-height * 1) -(@base-height * 5); background-size:(@base-height * 3) (@base-height * 6); }
+ }
+ #jstree-marker.jstree-dnd-responsive when (@responsive = true) {
+ border-left-width:10px;
+ border-top-width:10px;
+ border-bottom-width:10px;
+ margin-top:-10px;
+ }
+}
+
+.jstree-@{theme-name}-responsive when (@responsive = true) {
+ @import "responsive.less";
+}
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/src/themes/mixins.less
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vakata-jstree-3.3.5/src/themes/mixins.less Sun Dec 30 13:11:48 2018 -0500
b
@@ -0,0 +1,105 @@
+.gradient (@color1; @color2) {
+ background:@color1;
+ background: -webkit-linear-gradient(top, @color1 0%,@color2 100%);
+ background: linear-gradient(to bottom, @color1 0%,@color2 100%);
+}
+
+.jstree-theme (@base-height, @image, @image-height) {
+ @correction: (@image-height - @base-height) / 2;
+
+ .jstree-node { min-height:@base-height; line-height:@base-height; margin-left:@base-height; min-width:@base-height; }
+ .jstree-anchor { line-height:@base-height; height:@base-height; }
+ .jstree-icon { width:@base-height; height:@base-height; line-height:@base-height; }
+ .jstree-icon:empty { width:@base-height; height:@base-height; line-height:@base-height; }
+ &.jstree-rtl .jstree-node { margin-right:@base-height; }
+ .jstree-wholerow { height:@base-height; }
+
+ .jstree-node,
+ .jstree-icon { background-image:url("@{image}"); }
+ .jstree-node { background-position:-(@image-height * 9 + @correction) -@correction; background-repeat:repeat-y; }
+ .jstree-last { background:transparent; }
+
+ .jstree-open > .jstree-ocl { background-position:-(@image-height * 4 + @correction) -@correction; }
+ .jstree-closed > .jstree-ocl { background-position:-(@image-height * 3 + @correction) -@correction; }
+ .jstree-leaf > .jstree-ocl { background-position:-(@image-height * 2 + @correction) -@correction; }
+
+ .jstree-themeicon { background-position:-(@image-height * 8 + @correction) -@correction; }
+
+ > .jstree-no-dots {
+ .jstree-node,
+ .jstree-leaf > .jstree-ocl { background:transparent; }
+ .jstree-open > .jstree-ocl { background-position:-(@image-height * 1 + @correction) -@correction; }
+ .jstree-closed > .jstree-ocl { background-position:-@correction -@correction; }
+ }
+
+ .jstree-disabled {
+ background:transparent;
+ &.jstree-hovered {
+ background:transparent;
+ }
+ &.jstree-clicked {
+ background:#efefef;
+ }
+ }
+
+ .jstree-checkbox {
+ background-position:-(@image-height * 5 + @correction) -@correction;
+ &:hover { background-position:-(@image-height * 5 + @correction) -(@image-height * 1 + @correction); }
+ }
+
+ &.jstree-checkbox-selection .jstree-clicked, .jstree-checked {
+ > .jstree-checkbox {
+ background-position:-(@image-height * 7 + @correction) -@correction;
+ &:hover { background-position:-(@image-height * 7 + @correction) -(@image-height * 1 + @correction); }
+ }
+ }
+ .jstree-anchor {
+ > .jstree-undetermined {
+ background-position:-(@image-height * 6 + @correction) -@correction;
+ &:hover {
+ background-position:-(@image-height * 6 + @correction) -(@image-height * 1 + @correction);
+ }
+ }
+ }
+ .jstree-checkbox-disabled { opacity:0.8; filter: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'jstree-grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#jstree-grayscale"); /* Firefox 10+ */ filter: gray; /* IE6-9 */ -webkit-filter: grayscale(100%); /* Chrome 19+ & Safari 6+ */ }
+
+ > .jstree-striped { background-size:auto (@base-height * 2); }
+
+ &.jstree-rtl {
+ .jstree-node { background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg=="); background-position: 100% 1px; background-repeat:repeat-y; }
+ .jstree-last { background:transparent; }
+ .jstree-open > .jstree-ocl { background-position:-(@image-height * 4 + @correction) -(@image-height * 1 + @correction); }
+ .jstree-closed > .jstree-ocl { background-position:-(@image-height * 3 + @correction) -(@image-height * 1 + @correction); }
+ .jstree-leaf > .jstree-ocl { background-position:-(@image-height * 2 + @correction) -(@image-height * 1 + @correction); }
+ > .jstree-no-dots {
+ .jstree-node,
+ .jstree-leaf > .jstree-ocl { background:transparent; }
+ .jstree-open > .jstree-ocl { background-position:-(@image-height * 1 + @correction) -(@image-height * 1 + @correction); }
+ .jstree-closed > .jstree-ocl { background-position:-@correction -(@image-height * 1 + @correction); }
+ }
+ }
+ .jstree-themeicon-custom { background-color:transparent; background-image:none; background-position:0 0; }
+
+ > .jstree-container-ul .jstree-loading > .jstree-ocl { background:url("@{image-path}throbber.gif") center center no-repeat; }
+
+ .jstree-file { background:url("@{image}") -(@image-height * 3 + @correction) -(@image-height * 2 + @correction) no-repeat; }
+ .jstree-folder { background:url("@{image}") -(@image-height * 8 + @correction) -(@correction) no-repeat; }
+
+ > .jstree-container-ul > .jstree-node { margin-left:0; margin-right:0; }
+
+ // drag'n'drop
+ #jstree-dnd& {
+ line-height:@base-height; padding:0 4px;
+ .jstree-ok,
+ .jstree-er { background-image:url("@{image-path}32px.png"); background-repeat:no-repeat; background-color:transparent; }
+ i { background:transparent; width:@base-height; height:@base-height; line-height:@base-height; }
+ .jstree-ok { background-position: -(@correction) -(@image-height * 2 + @correction); }
+ .jstree-er { background-position: -(@image-height * 1 + @correction) -(@image-height * 2 + @correction); }
+ }
+
+ // ellipsis
+ .jstree-ellipsis { overflow: hidden; }
+ // base height + PADDINGS!
+ .jstree-ellipsis .jstree-anchor { width: calc(100% ~"-" (@base-height + 5px)); text-overflow: ellipsis; overflow: hidden; }
+ .jstree-ellipsis.jstree-no-icons .jstree-anchor { width: calc(100% ~"-" 5px); }
+}
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/src/themes/responsive.less
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vakata-jstree-3.3.5/src/themes/responsive.less Sun Dec 30 13:11:48 2018 -0500
b
@@ -0,0 +1,67 @@
+@media (max-width: 768px) {
+ // background image
+ .jstree-icon { background-image:url("@{image-path}@{base-height}.png"); }
+
+ .jstree-node,
+ .jstree-leaf > .jstree-ocl { background:transparent; }
+
+ .jstree-node { min-height:@base-height; line-height:@base-height; margin-left:@base-height; min-width:@base-height; white-space:nowrap; }
+ .jstree-anchor { line-height:@base-height; height:@base-height; }
+ .jstree-icon, .jstree-icon:empty { width:@base-height; height:@base-height; line-height:@base-height; }
+
+ > .jstree-container-ul > .jstree-node { margin-left:0; }
+ &.jstree-rtl .jstree-node { margin-left:0; margin-right:@base-height; background:transparent; }
+ &.jstree-rtl .jstree-container-ul > .jstree-node { margin-right:0; }
+
+ .jstree-ocl,
+ .jstree-themeicon,
+ .jstree-checkbox { background-size:(@base-height * 3) (@base-height * 6); }
+ .jstree-leaf > .jstree-ocl,
+ &.jstree-rtl .jstree-leaf > .jstree-ocl { background:transparent; }
+ .jstree-open > .jstree-ocl { background-position:0 0px !important; }
+ .jstree-closed > .jstree-ocl { background-position:0 -(@base-height * 1) !important; }
+ &.jstree-rtl .jstree-closed > .jstree-ocl { background-position:-(@base-height * 1) 0px !important; }
+
+ .jstree-themeicon { background-position:-(@base-height * 1) -(@base-height * 1); }
+
+ .jstree-checkbox, .jstree-checkbox:hover { background-position:-(@base-height * 1) -(@base-height * 2); }
+ &.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox,
+ &.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox:hover,
+ .jstree-checked > .jstree-checkbox,
+ .jstree-checked > .jstree-checkbox:hover { background-position:0 -(@base-height * 2); }
+ .jstree-anchor > .jstree-undetermined, .jstree-anchor > .jstree-undetermined:hover { background-position:0 -(@base-height * 3); }
+
+ .jstree-anchor { font-weight:bold; font-size:1.1em; text-shadow:1px 1px white; }
+
+ > .jstree-striped { background:transparent; }
+ .jstree-wholerow { border-top:1px solid @mobile-wholerow-bordert; border-bottom:1px solid @mobile-wholerow-borderb; background:@mobile-wholerow-bg-color; height:@base-height; }
+ .jstree-wholerow-hovered { background:@hovered-bg-color; }
+ .jstree-wholerow-clicked { background:@clicked-bg-color; }
+
+ // thanks to PHOTONUI
+ .jstree-children .jstree-last > .jstree-wholerow { box-shadow: inset 0 -6px 3px -5px @mobile-wholerow-shadow; }
+ .jstree-children .jstree-open > .jstree-wholerow { box-shadow: inset 0 6px 3px -5px @mobile-wholerow-shadow; border-top:0; }
+ .jstree-children .jstree-open + .jstree-open { box-shadow:none; }
+
+ // experiment
+ .jstree-node,
+ .jstree-icon,
+ .jstree-node > .jstree-ocl,
+ .jstree-themeicon,
+ .jstree-checkbox { background-image:url("@{image-path}@{base-height}.png"); background-size:(@base-height * 3) (@base-height * 6); }
+
+ .jstree-node { background-position:-(@base-height * 2) 0; background-repeat:repeat-y; }
+ .jstree-last { background:transparent; }
+ .jstree-leaf > .jstree-ocl { background-position:-(@base-height * 1) -(@base-height * 3); }
+ .jstree-last > .jstree-ocl { background-position:-(@base-height * 1) -(@base-height * 4); }
+ /*
+ .jstree-open > .jstree-ocl,
+ .jstree-closed > .jstree-ocl { border-radius:20px; background-color:white; }
+ */
+
+ .jstree-themeicon-custom { background-color:transparent; background-image:none; background-position:0 0; }
+ .jstree-file { background:url("@{image-path}@{base-height}.png") 0 -(@base-height * 4) no-repeat; background-size:(@base-height * 3) (@base-height * 6); }
+ .jstree-folder { background:url("@{image-path}@{base-height}.png") -(@base-height * 1) -(@base-height * 1) no-repeat; background-size:(@base-height * 3) (@base-height * 6); }
+
+ > .jstree-container-ul > .jstree-node { margin-left:0; margin-right:0; }
+}
\ No newline at end of file
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/src/vakata-jstree.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vakata-jstree-3.3.5/src/vakata-jstree.js Sun Dec 30 13:11:48 2018 -0500
[
@@ -0,0 +1,38 @@
+(function (factory) {
+ "use strict";
+ if (typeof define === 'function' && define.amd) {
+ define('jstree.checkbox', ['jquery','jstree'], factory);
+ }
+ else if(typeof exports === 'object') {
+ factory(require('jquery'), require('jstree'));
+ }
+ else {
+ factory(jQuery);
+ }
+}(function ($, undefined) {
+ "use strict";
+ if(document.registerElement && Object && Object.create) {
+ var proto = Object.create(HTMLElement.prototype);
+ proto.createdCallback = function () {
+ var c = { core : {}, plugins : [] }, i;
+ for(i in $.jstree.plugins) {
+ if($.jstree.plugins.hasOwnProperty(i) && this.attributes[i]) {
+ c.plugins.push(i);
+ if(this.getAttribute(i) && JSON.parse(this.getAttribute(i))) {
+ c[i] = JSON.parse(this.getAttribute(i));
+ }
+ }
+ }
+ for(i in $.jstree.defaults.core) {
+ if($.jstree.defaults.core.hasOwnProperty(i) && this.attributes[i]) {
+ c.core[i] = JSON.parse(this.getAttribute(i)) || this.getAttribute(i);
+ }
+ }
+ $(this).jstree(c);
+ };
+ // proto.attributeChangedCallback = function (name, previous, value) { };
+ try {
+ document.registerElement("vakata-jstree", { prototype: proto });
+ } catch(ignore) { }
+ }
+}));
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/test/unit/index.html
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vakata-jstree-3.3.5/test/unit/index.html Sun Dec 30 13:11:48 2018 -0500
b
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta charset="utf-8">
+  <title>Basic Test Suite</title>
+  <!-- Load local QUnit. -->
+  <link rel="stylesheet" href="libs/qunit.css" media="screen">
+  <script src="libs/qunit.js"></script>
+</head>
+<body>
+  <div id="qunit"></div>
+  <div id="qunit-fixture">this had better work.</div>
+  <!-- Load local lib and tests. -->
+  <script src="test.js"></script>
+</body>
+</html>
\ No newline at end of file
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/test/unit/libs/qunit.css
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vakata-jstree-3.3.5/test/unit/libs/qunit.css Sun Dec 30 13:11:48 2018 -0500
b
@@ -0,0 +1,244 @@
+/**
+ * QUnit v1.12.0 - A JavaScript Unit Testing Framework
+ *
+ * http://qunitjs.com
+ *
+ * Copyright 2012 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+/** Font Family and Sizes */
+
+#qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult {
+  font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial, sans-serif;
+}
+
+#qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; }
+#qunit-tests { font-size: smaller; }
+
+
+/** Resets */
+
+#qunit-tests, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult, #qunit-modulefilter {
+  margin: 0;
+  padding: 0;
+}
+
+
+/** Header */
+
+#qunit-header {
+  padding: 0.5em 0 0.5em 1em;
+
+  color: #8699a4;
+  background-color: #0d3349;
+
+  font-size: 1.5em;
+  line-height: 1em;
+  font-weight: normal;
+
+  border-radius: 5px 5px 0 0;
+  -moz-border-radius: 5px 5px 0 0;
+  -webkit-border-top-right-radius: 5px;
+  -webkit-border-top-left-radius: 5px;
+}
+
+#qunit-header a {
+  text-decoration: none;
+  color: #c2ccd1;
+}
+
+#qunit-header a:hover,
+#qunit-header a:focus {
+  color: #fff;
+}
+
+#qunit-testrunner-toolbar label {
+  display: inline-block;
+  padding: 0 .5em 0 .1em;
+}
+
+#qunit-banner {
+  height: 5px;
+}
+
+#qunit-testrunner-toolbar {
+  padding: 0.5em 0 0.5em 2em;
+  color: #5E740B;
+  background-color: #eee;
+  overflow: hidden;
+}
+
+#qunit-userAgent {
+  padding: 0.5em 0 0.5em 2.5em;
+  background-color: #2b81af;
+  color: #fff;
+  text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px;
+}
+
+#qunit-modulefilter-container {
+  float: right;
+}
+
+/** Tests: Pass/Fail */
+
+#qunit-tests {
+  list-style-position: inside;
+}
+
+#qunit-tests li {
+  padding: 0.4em 0.5em 0.4em 2.5em;
+  border-bottom: 1px solid #fff;
+  list-style-position: inside;
+}
+
+#qunit-tests.hidepass li.pass, #qunit-tests.hidepass li.running  {
+  display: none;
+}
+
+#qunit-tests li strong {
+  cursor: pointer;
+}
+
+#qunit-tests li a {
+  padding: 0.5em;
+  color: #c2ccd1;
+  text-decoration: none;
+}
+#qunit-tests li a:hover,
+#qunit-tests li a:focus {
+  color: #000;
+}
+
+#qunit-tests li .runtime {
+  float: right;
+  font-size: smaller;
+}
+
+.qunit-assert-list {
+  margin-top: 0.5em;
+  padding: 0.5em;
+
+  background-color: #fff;
+
+  border-radius: 5px;
+  -moz-border-radius: 5px;
+  -webkit-border-radius: 5px;
+}
+
+.qunit-collapsed {
+  display: none;
+}
+
+#qunit-tests table {
+  border-collapse: collapse;
+  margin-top: .2em;
+}
+
+#qunit-tests th {
+  text-align: right;
+  vertical-align: top;
+  padding: 0 .5em 0 0;
+}
+
+#qunit-tests td {
+  vertical-align: top;
+}
+
+#qunit-tests pre {
+  margin: 0;
+  white-space: pre-wrap;
+  word-wrap: break-word;
+}
+
+#qunit-tests del {
+  background-color: #e0f2be;
+  color: #374e0c;
+  text-decoration: none;
+}
+
+#qunit-tests ins {
+  background-color: #ffcaca;
+  color: #500;
+  text-decoration: none;
+}
+
+/*** Test Counts */
+
+#qunit-tests b.counts                       { color: black; }
+#qunit-tests b.passed                       { color: #5E740B; }
+#qunit-tests b.failed                       { color: #710909; }
+
+#qunit-tests li li {
+  padding: 5px;
+  background-color: #fff;
+  border-bottom: none;
+  list-style-position: inside;
+}
+
+/*** Passing Styles */
+
+#qunit-tests li li.pass {
+  color: #3c510c;
+  background-color: #fff;
+  border-left: 10px solid #C6E746;
+}
+
+#qunit-tests .pass                          { color: #528CE0; background-color: #D2E0E6; }
+#qunit-tests .pass .test-name               { color: #366097; }
+
+#qunit-tests .pass .test-actual,
+#qunit-tests .pass .test-expected           { color: #999999; }
+
+#qunit-banner.qunit-pass                    { background-color: #C6E746; }
+
+/*** Failing Styles */
+
+#qunit-tests li li.fail {
+  color: #710909;
+  background-color: #fff;
+  border-left: 10px solid #EE5757;
+  white-space: pre;
+}
+
+#qunit-tests > li:last-child {
+  border-radius: 0 0 5px 5px;
+  -moz-border-radius: 0 0 5px 5px;
+  -webkit-border-bottom-right-radius: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+}
+
+#qunit-tests .fail                          { color: #000000; background-color: #EE5757; }
+#qunit-tests .fail .test-name,
+#qunit-tests .fail .module-name             { color: #000000; }
+
+#qunit-tests .fail .test-actual             { color: #EE5757; }
+#qunit-tests .fail .test-expected           { color: green;   }
+
+#qunit-banner.qunit-fail                    { background-color: #EE5757; }
+
+
+/** Result */
+
+#qunit-testresult {
+  padding: 0.5em 0.5em 0.5em 2.5em;
+
+  color: #2b81af;
+  background-color: #D2E0E6;
+
+  border-bottom: 1px solid white;
+}
+#qunit-testresult .module-name {
+  font-weight: bold;
+}
+
+/** Fixture */
+
+#qunit-fixture {
+  position: absolute;
+  top: -10000px;
+  left: -10000px;
+  width: 1000px;
+  height: 1000px;
+}
\ No newline at end of file
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/test/unit/libs/qunit.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vakata-jstree-3.3.5/test/unit/libs/qunit.js Sun Dec 30 13:11:48 2018 -0500
[
b'@@ -0,0 +1,2212 @@\n+/**\r\n+ * QUnit v1.12.0 - A JavaScript Unit Testing Framework\r\n+ *\r\n+ * http://qunitjs.com\r\n+ *\r\n+ * Copyright 2013 jQuery Foundation and other contributors\r\n+ * Released under the MIT license.\r\n+ * https://jquery.org/license/\r\n+ */\r\n+\r\n+(function( window ) {\r\n+\r\n+var QUnit,\r\n+  assert,\r\n+  config,\r\n+  onErrorFnPrev,\r\n+  testId = 0,\r\n+  fileName = (sourceFromStacktrace( 0 ) || "" ).replace(/(:\\d+)+\\)?/, "").replace(/.+\\//, ""),\r\n+  toString = Object.prototype.toString,\r\n+  hasOwn = Object.prototype.hasOwnProperty,\r\n+  // Keep a local reference to Date (GH-283)\r\n+  Date = window.Date,\r\n+  setTimeout = window.setTimeout,\r\n+  defined = {\r\n+    setTimeout: typeof window.setTimeout !== "undefined",\r\n+    sessionStorage: (function() {\r\n+      var x = "qunit-test-string";\r\n+      try {\r\n+        sessionStorage.setItem( x, x );\r\n+        sessionStorage.removeItem( x );\r\n+        return true;\r\n+      } catch( e ) {\r\n+        return false;\r\n+      }\r\n+    }())\r\n+  },\r\n+  /**\r\n+   * Provides a normalized error string, correcting an issue\r\n+   * with IE 7 (and prior) where Error.prototype.toString is\r\n+   * not properly implemented\r\n+   *\r\n+   * Based on http://es5.github.com/#x15.11.4.4\r\n+   *\r\n+   * @param {String|Error} error\r\n+   * @return {String} error message\r\n+   */\r\n+  errorString = function( error ) {\r\n+    var name, message,\r\n+      errorString = error.toString();\r\n+    if ( errorString.substring( 0, 7 ) === "[object" ) {\r\n+      name = error.name ? error.name.toString() : "Error";\r\n+      message = error.message ? error.message.toString() : "";\r\n+      if ( name && message ) {\r\n+        return name + ": " + message;\r\n+      } else if ( name ) {\r\n+        return name;\r\n+      } else if ( message ) {\r\n+        return message;\r\n+      } else {\r\n+        return "Error";\r\n+      }\r\n+    } else {\r\n+      return errorString;\r\n+    }\r\n+  },\r\n+  /**\r\n+   * Makes a clone of an object using only Array or Object as base,\r\n+   * and copies over the own enumerable properties.\r\n+   *\r\n+   * @param {Object} obj\r\n+   * @return {Object} New object with only the own properties (recursively).\r\n+   */\r\n+  objectValues = function( obj ) {\r\n+    // Grunt 0.3.x uses an older version of jshint that still has jshint/jshint#392.\r\n+    /*jshint newcap: false */\r\n+    var key, val,\r\n+      vals = QUnit.is( "array", obj ) ? [] : {};\r\n+    for ( key in obj ) {\r\n+      if ( hasOwn.call( obj, key ) ) {\r\n+        val = obj[key];\r\n+        vals[key] = val === Object(val) ? objectValues(val) : val;\r\n+      }\r\n+    }\r\n+    return vals;\r\n+  };\r\n+\r\n+function Test( settings ) {\r\n+  extend( this, settings );\r\n+  this.assertions = [];\r\n+  this.testNumber = ++Test.count;\r\n+}\r\n+\r\n+Test.count = 0;\r\n+\r\n+Test.prototype = {\r\n+  init: function() {\r\n+    var a, b, li,\r\n+      tests = id( "qunit-tests" );\r\n+\r\n+    if ( tests ) {\r\n+      b = document.createElement( "strong" );\r\n+      b.innerHTML = this.nameHtml;\r\n+\r\n+      // `a` initialized at top of scope\r\n+      a = document.createElement( "a" );\r\n+      a.innerHTML = "Rerun";\r\n+      a.href = QUnit.url({ testNumber: this.testNumber });\r\n+\r\n+      li = document.createElement( "li" );\r\n+      li.appendChild( b );\r\n+      li.appendChild( a );\r\n+      li.className = "running";\r\n+      li.id = this.id = "qunit-test-output" + testId++;\r\n+\r\n+      tests.appendChild( li );\r\n+    }\r\n+  },\r\n+  setup: function() {\r\n+    if (\r\n+      // Emit moduleStart when we\'re switching from one module to another\r\n+      this.module !== config.previousModule ||\r\n+        // They could be equal (both undefined) but if the previousModule property doesn\'t\r\n+        // yet exist it means this is the first test in a suite that isn\'t wrapped in a\r\n+        // module, in which case we\'ll just emit a moduleStart event for \'undefined\'.\r\n+        // Without this, reporters can get testStart before moduleStart  which is a problem.\r\n+        !hasOwn.call( config, "previousModule" )\r\n+    ) {\r\n+      if ( hasOwn.call( config, "previousModul'..b'cense.\r\n+ *\r\n+ * More Info:\r\n+ *  http://ejohn.org/projects/javascript-diff-algorithm/\r\n+ *\r\n+ * Usage: QUnit.diff(expected, actual)\r\n+ *\r\n+ * QUnit.diff( "the quick brown fox jumped over", "the quick fox jumps over" ) == "the  quick <del>brown </del> fox <del>jumped </del><ins>jumps </ins> over"\r\n+ */\r\n+QUnit.diff = (function() {\r\n+  /*jshint eqeqeq:false, eqnull:true */\r\n+  function diff( o, n ) {\r\n+    var i,\r\n+      ns = {},\r\n+      os = {};\r\n+\r\n+    for ( i = 0; i < n.length; i++ ) {\r\n+      if ( !hasOwn.call( ns, n[i] ) ) {\r\n+        ns[ n[i] ] = {\r\n+          rows: [],\r\n+          o: null\r\n+        };\r\n+      }\r\n+      ns[ n[i] ].rows.push( i );\r\n+    }\r\n+\r\n+    for ( i = 0; i < o.length; i++ ) {\r\n+      if ( !hasOwn.call( os, o[i] ) ) {\r\n+        os[ o[i] ] = {\r\n+          rows: [],\r\n+          n: null\r\n+        };\r\n+      }\r\n+      os[ o[i] ].rows.push( i );\r\n+    }\r\n+\r\n+    for ( i in ns ) {\r\n+      if ( hasOwn.call( ns, i ) ) {\r\n+        if ( ns[i].rows.length === 1 && hasOwn.call( os, i ) && os[i].rows.length === 1 ) {\r\n+          n[ ns[i].rows[0] ] = {\r\n+            text: n[ ns[i].rows[0] ],\r\n+            row: os[i].rows[0]\r\n+          };\r\n+          o[ os[i].rows[0] ] = {\r\n+            text: o[ os[i].rows[0] ],\r\n+            row: ns[i].rows[0]\r\n+          };\r\n+        }\r\n+      }\r\n+    }\r\n+\r\n+    for ( i = 0; i < n.length - 1; i++ ) {\r\n+      if ( n[i].text != null && n[ i + 1 ].text == null && n[i].row + 1 < o.length && o[ n[i].row + 1 ].text == null &&\r\n+            n[ i + 1 ] == o[ n[i].row + 1 ] ) {\r\n+\r\n+        n[ i + 1 ] = {\r\n+          text: n[ i + 1 ],\r\n+          row: n[i].row + 1\r\n+        };\r\n+        o[ n[i].row + 1 ] = {\r\n+          text: o[ n[i].row + 1 ],\r\n+          row: i + 1\r\n+        };\r\n+      }\r\n+    }\r\n+\r\n+    for ( i = n.length - 1; i > 0; i-- ) {\r\n+      if ( n[i].text != null && n[ i - 1 ].text == null && n[i].row > 0 && o[ n[i].row - 1 ].text == null &&\r\n+            n[ i - 1 ] == o[ n[i].row - 1 ]) {\r\n+\r\n+        n[ i - 1 ] = {\r\n+          text: n[ i - 1 ],\r\n+          row: n[i].row - 1\r\n+        };\r\n+        o[ n[i].row - 1 ] = {\r\n+          text: o[ n[i].row - 1 ],\r\n+          row: i - 1\r\n+        };\r\n+      }\r\n+    }\r\n+\r\n+    return {\r\n+      o: o,\r\n+      n: n\r\n+    };\r\n+  }\r\n+\r\n+  return function( o, n ) {\r\n+    o = o.replace( /\\s+$/, "" );\r\n+    n = n.replace( /\\s+$/, "" );\r\n+\r\n+    var i, pre,\r\n+      str = "",\r\n+      out = diff( o === "" ? [] : o.split(/\\s+/), n === "" ? [] : n.split(/\\s+/) ),\r\n+      oSpace = o.match(/\\s+/g),\r\n+      nSpace = n.match(/\\s+/g);\r\n+\r\n+    if ( oSpace == null ) {\r\n+      oSpace = [ " " ];\r\n+    }\r\n+    else {\r\n+      oSpace.push( " " );\r\n+    }\r\n+\r\n+    if ( nSpace == null ) {\r\n+      nSpace = [ " " ];\r\n+    }\r\n+    else {\r\n+      nSpace.push( " " );\r\n+    }\r\n+\r\n+    if ( out.n.length === 0 ) {\r\n+      for ( i = 0; i < out.o.length; i++ ) {\r\n+        str += "<del>" + out.o[i] + oSpace[i] + "</del>";\r\n+      }\r\n+    }\r\n+    else {\r\n+      if ( out.n[0].text == null ) {\r\n+        for ( n = 0; n < out.o.length && out.o[n].text == null; n++ ) {\r\n+          str += "<del>" + out.o[n] + oSpace[n] + "</del>";\r\n+        }\r\n+      }\r\n+\r\n+      for ( i = 0; i < out.n.length; i++ ) {\r\n+        if (out.n[i].text == null) {\r\n+          str += "<ins>" + out.n[i] + nSpace[i] + "</ins>";\r\n+        }\r\n+        else {\r\n+          // `pre` initialized at top of scope\r\n+          pre = "";\r\n+\r\n+          for ( n = out.n[i].row + 1; n < out.o.length && out.o[n].text == null; n++ ) {\r\n+            pre += "<del>" + out.o[n] + oSpace[n] + "</del>";\r\n+          }\r\n+          str += " " + out.n[i].text + nSpace[i] + pre;\r\n+        }\r\n+      }\r\n+    }\r\n+\r\n+    return str;\r\n+  };\r\n+}());\r\n+\r\n+// for CommonJS environments, export everything\r\n+if ( typeof exports !== "undefined" ) {\r\n+  extend( exports, QUnit.constructor.prototype );\r\n+}\r\n+\r\n+// get at whatever the global object is, like window in browsers\r\n+}( (function() {return this;}.call()) ));\n\\ No newline at end of file\n'
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/test/unit/test.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vakata-jstree-3.3.5/test/unit/test.js Sun Dec 30 13:11:48 2018 -0500
b
@@ -0,0 +1,11 @@
+test('basic test', function() {
+  expect(1);
+  ok(true, 'this had better work.');
+});
+
+
+test('can access the DOM', function() {
+  expect(1);
+  var fixture = document.getElementById('qunit-fixture');
+  equal(fixture.innerText || fixture.textContent, 'this had better work.', 'should be able to access the DOM.');
+});
\ No newline at end of file
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/test/visual/desktop/index.html
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vakata-jstree-3.3.5/test/visual/desktop/index.html Sun Dec 30 13:11:48 2018 -0500
[
@@ -0,0 +1,44 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8">
+ <title>Light theme visual tests</title>
+ <link rel="stylesheet" href="./../../../dist/themes/default/style.min.css">
+ <link rel="stylesheet" href="./../../../dist/themes/default-dark/style.min.css">
+ <style>.tree { border:1px solid black; padding:10px; width:300px; margin:20px; float:left; min-height:200px; }</style>
+</head>
+<body style="background:white;">
+ <div class="tree" id="empty"></div>
+ <div class="tree" id="core"><ul><li>asdf</li></ul></div>
+ <div class="tree" id="tree">
+ <ul>
+ <li>Node 01
+ <ul>
+ <li>Node</li>
+ <li>Node</li>
+ </ul>
+ </li>
+ <li>Node 02</li>
+ <li data-jstree='{"opened" : true}'>Node 03
+ <ul>
+ <li>Node</li>
+ <li>Node</li>
+ </ul>
+ </li>
+ <li>Node 04</li>
+ <li>Node 05</li>
+ </ul>
+ </div>
+ <div class="tree" id="full"><ul><li data-jstree='{ "selected" : true, "type" : "file" }'>full</li><li>asdf</li></ul></div>
+ <div class="tree" id="dark"><ul><li data-jstree='{ "selected" : true, "type" : "file"}'>full</li><li>asdf</li></ul></div>
+
+ <script src="./../../../dist/libs/jquery.js"></script>
+ <script src="./../../../dist/jstree.min.js"></script>
+ <script>
+ $('#empty').jstree();
+ $('#tree, #core').jstree();
+ $('#full').jstree({ plugins : ["checkbox","sort","types","wholerow"], "types" : { "file" : { "icon" : "jstree-file" } } });
+ $('#dark').jstree({ plugins : ["checkbox","sort","types","wholerow"], "core" : { "themes" : { "name" : "default-dark" } }, "types" : { "file" : { "icon" : "jstree-file" } } });
+ </script>
+</body>
+</html>
\ No newline at end of file
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/test/visual/mobile/index.html
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vakata-jstree-3.3.5/test/visual/mobile/index.html Sun Dec 30 13:11:48 2018 -0500
[
@@ -0,0 +1,42 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8">
+ <title>Mobile theme visual tests</title>
+ <link rel="stylesheet" href="./../../../dist/themes/default/style.min.css">
+ <link rel="stylesheet" href="./../../../dist/themes/default-dark/style.min.css">
+ <style>.tree { border:1px solid black; padding:10px; width:300px; margin:20px; float:left; min-height:200px; }</style>
+</head>
+<body style="background:white;">
+ <div class="tree" id="tree">
+ <ul>
+ <li>Node 01
+ <ul>
+ <li>Node</li>
+ <li>Node</li>
+ </ul>
+ </li>
+ <li>Node 02</li>
+ <li data-jstree='{"opened" : true}'>Node 03
+ <ul>
+ <li>Node</li>
+ <li>Node</li>
+ </ul>
+ </li>
+ <li>Node 04</li>
+ <li>Node 05</li>
+ </ul>
+ </div>
+ <div class="tree" id="full"><ul><li data-jstree='{ "selected" : true, "type" : "file" }'>full</li><li>asdf</li></ul></div>
+ <div class="tree" id="dark"><ul><li data-jstree='{ "selected" : true, "type" : "file"}'>full</li><li>asdf</li></ul></div>
+
+ <script src="./../../../dist/libs/jquery.js"></script>
+ <script src="./../../../dist/jstree.min.js"></script>
+ <script>
+ $.jstree.defaults.core.themes.responsive = true;
+ $('#tree').jstree();
+ $('#full').jstree({ plugins : ["checkbox","sort","types","wholerow"], "types" : { "file" : { "icon" : "jstree-file" } } });
+ $('#dark').jstree({ plugins : ["checkbox","sort","types","wholerow"], "core" : { "themes" : { "name" : "default-dark" } }, "types" : { "file" : { "icon" : "jstree-file" } } });
+ </script>
+</body>
+</html>
\ No newline at end of file
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/test/visual/screenshots/desktop/.png
b
Binary file vakata-jstree-3.3.5/test/visual/screenshots/desktop/.png has changed
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/test/visual/screenshots/desktop/desktop.png
b
Binary file vakata-jstree-3.3.5/test/visual/screenshots/desktop/desktop.png has changed
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/test/visual/screenshots/desktop/home.png
b
Binary file vakata-jstree-3.3.5/test/visual/screenshots/desktop/home.png has changed
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/test/visual/screenshots/mobile/.png
b
Binary file vakata-jstree-3.3.5/test/visual/screenshots/mobile/.png has changed
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/test/visual/screenshots/mobile/home.png
b
Binary file vakata-jstree-3.3.5/test/visual/screenshots/mobile/home.png has changed
b
diff -r 000000000000 -r 25602263cff0 vakata-jstree-3.3.5/test/visual/screenshots/mobile/mobile.png
b
Binary file vakata-jstree-3.3.5/test/visual/screenshots/mobile/mobile.png has changed