jqtree 1.6.0 → 1.6.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc +3 -11
- package/.github/workflows/ci.yml +48 -23
- package/.github/workflows/codeql-analysis.yml +9 -5
- package/.prettier +3 -0
- package/README.md +11 -8
- package/bower.json +1 -1
- package/{.postcssrc → config/.postcssrc} +0 -0
- package/config/babel.config.json +11 -0
- package/config/babel.coverage.config.json +4 -0
- package/{jest-jsdom.config.js → config/jest.config.js} +9 -5
- package/config/playwright.config.js +18 -0
- package/config/production +4 -0
- package/{rollup.config.js → config/rollup.config.js} +19 -14
- package/{jqtree.postcss → css/jqtree.postcss} +3 -0
- package/devserver/index.html +1 -9
- package/docs/Gemfile +2 -0
- package/docs/Gemfile.lock +263 -0
- package/{_config.yml → docs/_config.yml} +8 -1
- package/{_entries → docs/_entries}/01_general.md +0 -0
- package/{_entries → docs/_entries}/02_introduction.md +0 -0
- package/{_entries → docs/_entries}/03_features.md +1 -1
- package/{_entries → docs/_entries}/04_demo.html +1 -7
- package/{_entries → docs/_entries}/05_requirements.md +0 -0
- package/{_entries → docs/_entries}/06_downloads.md +0 -0
- package/{_entries → docs/_entries}/07_tutorial.md +0 -0
- package/{_entries → docs/_entries}/08_examples.md +0 -0
- package/{_entries → docs/_entries}/09_usecases.md +0 -0
- package/{_entries → docs/_entries}/10_changelog.md +14 -0
- package/{_entries → docs/_entries}/11_options.md +0 -0
- package/{_entries → docs/_entries}/12_animationspeed.md +0 -0
- package/{_entries → docs/_entries}/13_autoescape.md +0 -0
- package/{_entries → docs/_entries}/14_autoopen.md +0 -0
- package/{_entries → docs/_entries}/15_buttonleft.md +0 -0
- package/{_entries → docs/_entries}/16_closedicon.md +0 -0
- package/{_entries → docs/_entries}/17_data.md +0 -0
- package/{_entries → docs/_entries}/18_datafilter.md +0 -0
- package/{_entries → docs/_entries}/19_data-url.md +0 -0
- package/{_entries → docs/_entries}/20_draganddrop.md +0 -0
- package/{_entries → docs/_entries}/21_keyboardsupport.md +0 -0
- package/{_entries → docs/_entries}/22_oncanmove.md +0 -0
- package/{_entries → docs/_entries}/23_oncanmoveto.md +2 -2
- package/{_entries → docs/_entries}/24_oncanselectnode.md +0 -0
- package/{_entries → docs/_entries}/25_oncreateli.md +2 -2
- package/{_entries → docs/_entries}/26_ondragmove.md +0 -0
- package/{_entries → docs/_entries}/27_ondragstop.md +0 -0
- package/{_entries → docs/_entries}/28_onismovehandle.md +0 -0
- package/{_entries → docs/_entries}/29_onloadfailed.md +0 -0
- package/{_entries → docs/_entries}/30_onloading.md +2 -2
- package/{_entries → docs/_entries}/31_openedicon.md +0 -0
- package/{_entries → docs/_entries}/32_openfolderdelay.md +2 -0
- package/{_entries → docs/_entries}/33_rtl.md +0 -0
- package/{_entries → docs/_entries}/34_savestate.md +0 -0
- package/{_entries → docs/_entries}/35_selectable.md +0 -0
- package/{_entries → docs/_entries}/36_showemptyfolder.md +0 -0
- package/{_entries → docs/_entries}/37_slide.md +0 -0
- package/{_entries → docs/_entries}/38_start_dnd_delay.md +0 -0
- package/{_entries → docs/_entries}/39_tabindex.md +0 -0
- package/{_entries → docs/_entries}/40_usecontextmenu.md +0 -0
- package/{_entries → docs/_entries}/41_functions.md +0 -0
- package/{_entries → docs/_entries}/42_addparentnode.md +1 -1
- package/{_entries → docs/_entries}/43_addnodeafter.md +1 -1
- package/{_entries → docs/_entries}/44_addnodebefore.md +1 -1
- package/{_entries → docs/_entries}/45_appendnode.md +5 -5
- package/{_entries → docs/_entries}/46_closenode.md +0 -0
- package/{_entries → docs/_entries}/47_destroy.md +0 -0
- package/{_entries → docs/_entries}/48_getnodebycallback.md +0 -0
- package/{_entries → docs/_entries}/49_getnodebyid.md +0 -0
- package/{_entries → docs/_entries}/50_getnodebyhtmlelement.md +2 -2
- package/{_entries → docs/_entries}/51_getselectednode.md +0 -0
- package/{_entries → docs/_entries}/52_getstate.md +0 -0
- package/{_entries → docs/_entries}/53_gettree.md +1 -1
- package/{_entries → docs/_entries}/54_isdragging.md +1 -1
- package/{_entries → docs/_entries}/55_loaddata.md +3 -3
- package/{_entries → docs/_entries}/56_loaddatafromurl.md +4 -4
- package/{_entries → docs/_entries}/57_movedown.md +0 -0
- package/{_entries → docs/_entries}/58_movenode.md +3 -3
- package/{_entries → docs/_entries}/59_moveup.md +0 -0
- package/{_entries → docs/_entries}/60_opennode.md +3 -3
- package/docs/_entries/61_prependnode.md +21 -0
- package/docs/_entries/62_refresh.md +12 -0
- package/{_entries/62_reload.md → docs/_entries/63_reload.md} +2 -2
- package/{_entries/63_removenode.md → docs/_entries/64_removenode.md} +0 -0
- package/{_entries/64_selectnode.md → docs/_entries/65_selectnode.md} +0 -0
- package/{_entries/65_scrolltonode.md → docs/_entries/66_scrolltonode.md} +0 -0
- package/{_entries/66_setoption.md → docs/_entries/67_setoption.md} +0 -0
- package/{_entries/67_setstate.md → docs/_entries/68_setstate.md} +0 -0
- package/{_entries/68_toggle.md → docs/_entries/69_toggle.md} +0 -0
- package/{_entries/69_tojson.md → docs/_entries/70_tojson.md} +0 -0
- package/{_entries/70_updatenode.md → docs/_entries/71_updatenode.md} +1 -1
- package/{_entries/71_events.md → docs/_entries/72_events.md} +0 -0
- package/{_entries/72_tree-click.md → docs/_entries/73_tree-click.md} +0 -0
- package/{_entries/73_tree-close.md → docs/_entries/74_tree-close.md} +0 -0
- package/{_entries/74_tree-contextmenu.md → docs/_entries/75_tree-contextmenu.md} +0 -0
- package/{_entries/75_tree-dblclick.md → docs/_entries/76_tree-dblclick.md} +0 -0
- package/{_entries/76_tree-init.md → docs/_entries/77_tree-init.md} +0 -0
- package/{_entries/77_tree-load-data.md → docs/_entries/78_tree-load-data.md} +0 -0
- package/{_entries/78_tree-loading-data.md → docs/_entries/79_tree-loading-data.md} +0 -0
- package/{_entries/79_tree-move.md → docs/_entries/80_tree-move.md} +0 -0
- package/{_entries/80_tree-refresh.md → docs/_entries/81_tree-refresh.md} +0 -0
- package/{_entries/81_tree-open.md → docs/_entries/82_tree-open.md} +0 -0
- package/{_entries/82_tree-select.md → docs/_entries/83_tree-select.md} +0 -0
- package/{_entries/83_multiple-selection.md → docs/_entries/84_multiple-selection.md} +0 -0
- package/{_entries/84_add-to-selection.md → docs/_entries/85_add-to-selection.md} +0 -0
- package/{_entries/85_get-selected-nodes.md → docs/_entries/86_get-selected-nodes.md} +0 -0
- package/{_entries/86_is-node-selected.md → docs/_entries/87_is-node-selected.md} +1 -1
- package/{_entries/87_remove-from-selection.md → docs/_entries/88_remove-from-selection.md} +0 -0
- package/{_entries/88_node-functions.md → docs/_entries/89_node-functions.md} +0 -0
- package/{_entries/89_children.md → docs/_entries/90_children.md} +0 -0
- package/{_entries/90_getdata.md → docs/_entries/91_getdata.md} +2 -2
- package/{_entries/91_getlevel.md → docs/_entries/92_getlevel.md} +0 -0
- package/{_entries/92_getnextnode.md → docs/_entries/93_getnextnode.md} +0 -0
- package/{_entries/93_getnextsibling.md → docs/_entries/94_getnextsibling.md} +0 -0
- package/{_entries/94_getpreviousnode.md → docs/_entries/95_getpreviousnode.md} +0 -0
- package/{_entries/95_getprevioussibling.md → docs/_entries/96_getprevioussibling.md} +0 -0
- package/{_entries/96_parent.md → docs/_entries/97_parent.md} +1 -1
- package/{_entries → docs/_entries}/insert.py +0 -0
- package/{_entries → docs/_entries}/renumber.py +0 -0
- package/{_examples → docs/_examples}/01_load_json_data.html +3 -5
- package/{_examples → docs/_examples}/02_load_json_data_from_server.html +3 -5
- package/{_examples → docs/_examples}/03_drag_and_drop.html +3 -5
- package/{_examples → docs/_examples}/04_save_state.html +3 -5
- package/{_examples → docs/_examples}/05_load_on_demand.html +3 -5
- package/{_examples → docs/_examples}/06_autoescape.html +3 -5
- package/{_examples → docs/_examples}/07_autoscroll.html +3 -5
- package/{_examples → docs/_examples}/08_multiple_select.html +3 -5
- package/{_examples → docs/_examples}/09_custom_html.html +3 -5
- package/{_examples → docs/_examples}/10_icon_buttons.html +3 -5
- package/{_examples → docs/_examples}/11_right-to-left.html +3 -5
- package/{_examples → docs/_examples}/12_button_on_right.html +3 -5
- package/docs/_examples/13_drag_outside.html +48 -0
- package/docs/_examples/14_filter.html +111 -0
- package/docs/_layouts/example.html +7 -0
- package/docs/_layouts/page.html +26 -0
- package/docs/documentation.css +3 -0
- package/docs/index.html +65 -0
- package/docs/jqtree.css +189 -0
- package/docs/package.json +22 -0
- package/docs/pnpm-lock.yaml +768 -0
- package/docs/postcss.config.js +7 -0
- package/docs/static/bower.json +8 -0
- package/docs/static/bower_components/fontawesome/css/all.min.css +5 -0
- package/{static → docs/static}/bower_components/fontawesome/webfonts/fa-brands-400.eot +0 -0
- package/{static → docs/static}/bower_components/fontawesome/webfonts/fa-brands-400.svg +774 -627
- package/{static → docs/static}/bower_components/fontawesome/webfonts/fa-brands-400.ttf +0 -0
- package/docs/static/bower_components/fontawesome/webfonts/fa-brands-400.woff +0 -0
- package/docs/static/bower_components/fontawesome/webfonts/fa-brands-400.woff2 +0 -0
- package/{static → docs/static}/bower_components/fontawesome/webfonts/fa-regular-400.eot +0 -0
- package/{static → docs/static}/bower_components/fontawesome/webfonts/fa-regular-400.svg +93 -95
- package/{static → docs/static}/bower_components/fontawesome/webfonts/fa-regular-400.ttf +0 -0
- package/docs/static/bower_components/fontawesome/webfonts/fa-regular-400.woff +0 -0
- package/docs/static/bower_components/fontawesome/webfonts/fa-regular-400.woff2 +0 -0
- package/{static → docs/static}/bower_components/fontawesome/webfonts/fa-solid-900.eot +0 -0
- package/{static → docs/static}/bower_components/fontawesome/webfonts/fa-solid-900.svg +1164 -1074
- package/{static → docs/static}/bower_components/fontawesome/webfonts/fa-solid-900.ttf +0 -0
- package/docs/static/bower_components/fontawesome/webfonts/fa-solid-900.woff +0 -0
- package/docs/static/bower_components/fontawesome/webfonts/fa-solid-900.woff2 +0 -0
- package/{static → docs/static}/bower_components/jquery/dist/jquery.js +118 -109
- package/docs/static/bower_components/jquery/dist/jquery.min.js +2 -0
- package/{static → docs/static}/bower_components/jquery-mockjax/dist/jquery.mockjax.js +15 -9
- package/docs/static/documentation.css +1313 -0
- package/docs/static/documentation.js +26 -0
- package/{static → docs/static}/example.css +14 -33
- package/{static → docs/static}/example.postcss +15 -32
- package/{static → docs/static}/example_data.js +33 -36
- package/{static → docs/static}/examples/autoescape.js +0 -0
- package/{static → docs/static}/examples/autoscroll.js +0 -0
- package/{static → docs/static}/examples/button-on-right.js +0 -0
- package/{static → docs/static}/examples/custom_html.js +5 -9
- package/{static → docs/static}/examples/drag-outside.js +0 -0
- package/{static → docs/static}/examples/drag_and_drop.js +0 -0
- package/docs/static/examples/filter.js +63 -0
- package/{static → docs/static}/examples/icon_buttons.js +0 -0
- package/{static → docs/static}/examples/load_json_data.js +0 -0
- package/{static → docs/static}/examples/load_json_data_from_server.js +0 -0
- package/{static → docs/static}/examples/load_on_demand.js +0 -0
- package/{static → docs/static}/examples/multiple_select.js +0 -0
- package/{static → docs/static}/examples/right-to-left.js +0 -0
- package/{static → docs/static}/examples/save_state.js +0 -0
- package/{static → docs/static}/monokai.css +0 -0
- package/{static → docs/static}/spinner.gif +0 -0
- package/docs/tailwind.config.js +16 -0
- package/docs/tree.jquery.js +21 -0
- package/jqtree.css +4 -1
- package/lib/dataLoader.js +146 -98
- package/lib/dragAndDropHandler.js +672 -470
- package/lib/elementsRenderer.js +282 -197
- package/lib/jqtreeOptions.js +1 -2
- package/lib/keyHandler.js +134 -87
- package/lib/mouse.widget.js +285 -184
- package/lib/node.js +691 -505
- package/lib/nodeElement.js +329 -205
- package/lib/playwright/coverage.js +140 -0
- package/lib/playwright/playwright.test.js +298 -179
- package/lib/playwright/testUtils.js +267 -0
- package/lib/saveStateHandler.js +311 -204
- package/lib/scrollHandler.js +293 -199
- package/lib/selectNodeHandler.js +140 -100
- package/lib/simple.widget.js +184 -109
- package/lib/test/global.d.js +3 -0
- package/lib/test/jqTree/create.test.js +44 -40
- package/lib/test/jqTree/events.test.js +186 -138
- package/lib/test/jqTree/keyboard.test.js +216 -199
- package/lib/test/jqTree/loadOnDemand.test.js +238 -157
- package/lib/test/jqTree/methods.test.js +1289 -1019
- package/lib/test/jqTree/options.test.js +491 -410
- package/lib/test/node.test.js +1036 -873
- package/lib/test/nodeUtil.test.js +21 -20
- package/lib/test/support/exampleData.js +35 -23
- package/lib/test/support/jqTreeMatchers.js +72 -54
- package/lib/test/support/matchers.d.js +1 -0
- package/lib/test/support/setupTests.js +9 -3
- package/lib/test/support/testUtil.js +35 -15
- package/lib/test/support/treeStructure.js +41 -32
- package/lib/test/util.test.js +21 -20
- package/lib/tree.jquery.d.js +1 -0
- package/lib/tree.jquery.js +1264 -886
- package/lib/types.js +1 -2
- package/lib/typings.d.js +2 -0
- package/lib/util.js +19 -8
- package/lib/version.js +8 -3
- package/package.json +54 -47
- package/src/dataLoader.ts +6 -6
- package/src/dragAndDropHandler.ts +8 -8
- package/src/elementsRenderer.ts +4 -0
- package/src/jqtreeOptions.ts +2 -2
- package/src/mouse.widget.ts +19 -15
- package/src/node.ts +27 -41
- package/src/nodeElement.ts +17 -9
- package/src/playwright/.eslintrc +5 -0
- package/src/playwright/coverage.ts +41 -0
- package/src/playwright/playwright.test.ts +75 -77
- package/src/playwright/playwright.test.ts-snapshots/with-dragAndDrop-moves-a-node-1-Chromium-darwin.png +0 -0
- package/src/playwright/playwright.test.ts-snapshots/with-dragAndDrop-moves-a-node-1-Chromium-linux.png +0 -0
- package/src/playwright/playwright.test.ts-snapshots/without-dragAndDrop-displays-a-tree-1-Chromium-darwin.png +0 -0
- package/src/playwright/playwright.test.ts-snapshots/without-dragAndDrop-displays-a-tree-1-Chromium-linux.png +0 -0
- package/src/playwright/playwright.test.ts-snapshots/without-dragAndDrop-selects-a-node-1-Chromium-darwin.png +0 -0
- package/src/playwright/playwright.test.ts-snapshots/without-dragAndDrop-selects-a-node-1-Chromium-linux.png +0 -0
- package/src/playwright/testUtils.ts +122 -0
- package/src/saveStateHandler.ts +11 -6
- package/src/selectNodeHandler.ts +1 -1
- package/src/simple.widget.ts +1 -1
- package/src/test/.eslintrc +14 -0
- package/src/test/jqTree/create.test.ts +0 -1
- package/src/test/jqTree/events.test.ts +10 -10
- package/src/test/jqTree/keyboard.test.ts +0 -1
- package/src/test/jqTree/loadOnDemand.test.ts +56 -11
- package/src/test/jqTree/methods.test.ts +72 -55
- package/src/test/jqTree/options.test.ts +30 -33
- package/src/test/node.test.ts +2 -2
- package/src/test/support/jqTreeMatchers.ts +8 -9
- package/src/test/support/matchers.d.ts +2 -4
- package/src/test/support/setupTests.ts +2 -1
- package/src/tree.jquery.d.ts +19 -13
- package/src/tree.jquery.ts +35 -28
- package/src/version.ts +1 -1
- package/tree.jquery.debug.js +4810 -3325
- package/tree.jquery.debug.js.map +1 -1
- package/tree.jquery.js +3 -3
- package/tree.jquery.js.map +1 -1
- package/tsconfig.json +1 -0
- package/_entries/61_prependnode.md +0 -21
- package/_examples/13_drag_outside.html +0 -25
- package/_layouts/base.html +0 -55
- package/_layouts/frontpage.html +0 -20
- package/_layouts/page.html +0 -7
- package/index.html +0 -48
- package/jest-browser.config.js +0 -18
- package/jest-playwright.config.js +0 -21
- package/jest.config.js +0 -8
- package/lib/playwright/testUtil.js +0 -223
- package/lib/playwright/visualRegression.js +0 -128
- package/production +0 -5
- package/src/playwright/screenshots/displays_a_tree_Desktop.png +0 -0
- package/src/playwright/screenshots/displays_a_tree_iPhone 6.png +0 -0
- package/src/playwright/screenshots/moves_a_node_Desktop.png +0 -0
- package/src/playwright/screenshots/moves_a_node_iPhone 6.png +0 -0
- package/src/playwright/screenshots/opens_a_node_Desktop.png +0 -0
- package/src/playwright/screenshots/opens_a_node_iPhone 6.png +0 -0
- package/src/playwright/screenshots/selects_a_node_Desktop.png +0 -0
- package/src/playwright/screenshots/selects_a_node_iPhone 6.png +0 -0
- package/src/playwright/testUtil.ts +0 -171
- package/src/playwright/visualRegression.ts +0 -88
- package/static/bower.json +0 -9
- package/static/bower_components/bootstrap/dist/css/bootstrap-theme.min.css +0 -6
- package/static/bower_components/bootstrap/dist/css/bootstrap.min.css +0 -6
- package/static/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot +0 -0
- package/static/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.svg +0 -288
- package/static/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf +0 -0
- package/static/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff +0 -0
- package/static/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 +0 -0
- package/static/bower_components/bootstrap/dist/js/bootstrap.min.js +0 -6
- package/static/bower_components/fontawesome/css/all.min.css +0 -5
- package/static/bower_components/fontawesome/webfonts/fa-brands-400.woff +0 -0
- package/static/bower_components/fontawesome/webfonts/fa-brands-400.woff2 +0 -0
- package/static/bower_components/fontawesome/webfonts/fa-regular-400.woff +0 -0
- package/static/bower_components/fontawesome/webfonts/fa-regular-400.woff2 +0 -0
- package/static/bower_components/fontawesome/webfonts/fa-solid-900.woff +0 -0
- package/static/bower_components/fontawesome/webfonts/fa-solid-900.woff2 +0 -0
- package/static/bower_components/jquery/dist/jquery.min.js +0 -2
- package/static/documentation.css +0 -171
- package/static/documentation.js +0 -48
package/tsconfig.json
CHANGED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: prependNode
|
|
3
|
-
name: functions-prependnode
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
**function prependNode(new_node_info, parent_node);**
|
|
7
|
-
|
|
8
|
-
Add a node to this parent node as the first child. If **parent_node** is empty, then the new node becomes a root node.
|
|
9
|
-
|
|
10
|
-
{% highlight js %}
|
|
11
|
-
var parent_node = $tree.tree('getNodeById', 123);
|
|
12
|
-
|
|
13
|
-
$tree.tree(
|
|
14
|
-
'prependNode',
|
|
15
|
-
{
|
|
16
|
-
name: 'new_node',
|
|
17
|
-
id: 456
|
|
18
|
-
},
|
|
19
|
-
parent_node
|
|
20
|
-
);
|
|
21
|
-
{% endhighlight %}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Drag outside tree
|
|
3
|
-
layout: page
|
|
4
|
-
js: examples/drag-outside.js
|
|
5
|
-
css: example.css
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
<p id="nav">
|
|
9
|
-
<a href="../12_button_on_right/">« Example 11</a>
|
|
10
|
-
</p>
|
|
11
|
-
|
|
12
|
-
<h1>Example 13 - drag node outside tree</h1>
|
|
13
|
-
|
|
14
|
-
<div id="tree1" data-url="/example_data/"></div>
|
|
15
|
-
|
|
16
|
-
<div id="targetDiv">drag here</div>
|
|
17
|
-
|
|
18
|
-
<h3>javascript</h3>
|
|
19
|
-
|
|
20
|
-
{% highlight js %}
|
|
21
|
-
$('#tree1').tree({
|
|
22
|
-
onDragMove: handleMove,
|
|
23
|
-
onDragStop: handleStop
|
|
24
|
-
});
|
|
25
|
-
{% endhighlight %}
|
package/_layouts/base.html
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html>
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="utf-8" />
|
|
5
|
-
<title>{% if page.title %}{{ page.title }}{% else %}{{ site.title }}{% endif %}</title>
|
|
6
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
|
-
<meta name="description" content="JqTree is a jQuery widget for displaying a tree structure in html" />
|
|
8
|
-
<link rel="stylesheet" href="{{ site.baseurl }}/static/bower_components/bootstrap/dist/css/bootstrap.min.css" />
|
|
9
|
-
<link
|
|
10
|
-
rel="stylesheet"
|
|
11
|
-
href="{{ site.baseurl }}/static/bower_components/bootstrap/dist/css/bootstrap-theme.min.css"
|
|
12
|
-
/>
|
|
13
|
-
<link rel="stylesheet" href="{{ site.baseurl }}/jqtree.css" />
|
|
14
|
-
<link rel="stylesheet" href="{{ site.baseurl }}/static/monokai.css" />
|
|
15
|
-
<link rel="stylesheet" href="{{ site.baseurl }}/static/bower_components/fontawesome/css/all.min.css" />
|
|
16
|
-
|
|
17
|
-
<script>
|
|
18
|
-
;(function(i, s, o, g, r, a, m) {
|
|
19
|
-
i["GoogleAnalyticsObject"] = r
|
|
20
|
-
;(i[r] =
|
|
21
|
-
i[r] ||
|
|
22
|
-
function() {
|
|
23
|
-
;(i[r].q = i[r].q || []).push(arguments)
|
|
24
|
-
}),
|
|
25
|
-
(i[r].l = 1 * new Date())
|
|
26
|
-
;(a = s.createElement(o)), (m = s.getElementsByTagName(o)[0])
|
|
27
|
-
a.async = 1
|
|
28
|
-
a.src = g
|
|
29
|
-
m.parentNode.insertBefore(a, m)
|
|
30
|
-
})(window, document, "script", "//www.google-analytics.com/analytics.js", "ga")
|
|
31
|
-
|
|
32
|
-
ga("create", "UA-33742133-1", "auto")
|
|
33
|
-
ga("require", "displayfeatures")
|
|
34
|
-
ga("require", "linkid", "linkid.js")
|
|
35
|
-
ga("send", "pageview")
|
|
36
|
-
</script>
|
|
37
|
-
|
|
38
|
-
{% if page.css %}
|
|
39
|
-
<link rel="stylesheet" href="{{ site.baseurl }}/static/{{ page.css }}" />
|
|
40
|
-
{% endif %}
|
|
41
|
-
</head>
|
|
42
|
-
<body>
|
|
43
|
-
{{ content }}
|
|
44
|
-
</body>
|
|
45
|
-
|
|
46
|
-
<script src="{{ site.baseurl }}/static/bower_components/jquery/dist/jquery.min.js"></script>
|
|
47
|
-
<script src="{{ site.baseurl }}/tree.jquery.js"></script>
|
|
48
|
-
<script src="{{ site.baseurl }}/static/bower_components/bootstrap/dist/js/bootstrap.min.js"></script>
|
|
49
|
-
<script src="{{ site.baseurl }}/static/bower_components/jquery-mockjax/dist/jquery.mockjax.js"></script>
|
|
50
|
-
<script src="{{ site.baseurl }}/static/example_data.js"></script>
|
|
51
|
-
|
|
52
|
-
{% if page.js %}
|
|
53
|
-
<script src="{{ site.baseurl }}/static/{{ page.js }}"></script>
|
|
54
|
-
{% endif %}
|
|
55
|
-
</html>
|
package/_layouts/frontpage.html
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
layout: base
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
<div class="jumbotron" id="jqtree">
|
|
6
|
-
<div class="container">
|
|
7
|
-
<h1>jqTree</h1>
|
|
8
|
-
<p>
|
|
9
|
-
<strong class="title">JqTree</strong> is a jQuery widget for displaying a <strong>tree structure</strong> in html
|
|
10
|
-
<br>
|
|
11
|
-
It supports <strong>json data</strong>, loading via <strong>ajax</strong> and <strong>drag-and-drop</strong>.
|
|
12
|
-
</p>
|
|
13
|
-
<p>
|
|
14
|
-
<a class="btn btn-primary" href="https://github.com/mbraak/jqTree/tarball/master">Download jqTree</a>
|
|
15
|
-
</p>
|
|
16
|
-
</div>
|
|
17
|
-
</div>
|
|
18
|
-
<div class="container">
|
|
19
|
-
{{ content }}
|
|
20
|
-
</div>
|
package/_layouts/page.html
DELETED
package/index.html
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
layout: frontpage
|
|
3
|
-
js: documentation.js
|
|
4
|
-
css: documentation.css
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
<div class="row">
|
|
8
|
-
<div class="col-md-3">
|
|
9
|
-
<div class="bs-sidebar hidden-print" id="menu" role="complementary">
|
|
10
|
-
<a href="#jqtree"><h2>jqTree</h2></a>
|
|
11
|
-
<ul class="nav bs-sidenav">
|
|
12
|
-
{% assign level = 0 %}
|
|
13
|
-
|
|
14
|
-
{% for entry in site.entries %}
|
|
15
|
-
{% if entry.section %}
|
|
16
|
-
{% if level == 1 %}
|
|
17
|
-
</ul>
|
|
18
|
-
</li>
|
|
19
|
-
{% endif %}
|
|
20
|
-
<li>
|
|
21
|
-
<a href="#{{ entry.name }}">{{ entry.title }}</a>
|
|
22
|
-
<ul class="nav">
|
|
23
|
-
{% assign level = 1 %}
|
|
24
|
-
{% else %}
|
|
25
|
-
<li><a href="#{{ entry.name }}">{{ entry.title }}</a></li>
|
|
26
|
-
{% endif %}
|
|
27
|
-
{% endfor %}
|
|
28
|
-
|
|
29
|
-
{% if level == 1 %}
|
|
30
|
-
</ul>
|
|
31
|
-
</li>
|
|
32
|
-
{% endif %}
|
|
33
|
-
</ul>
|
|
34
|
-
</div>
|
|
35
|
-
</div>
|
|
36
|
-
<div class="col-md-9" id="main">
|
|
37
|
-
{% for entry in site.entries %}
|
|
38
|
-
{% if entry.hide_title %}
|
|
39
|
-
<div id="{{ entry.name }}"></div>
|
|
40
|
-
{% elsif entry.section %}
|
|
41
|
-
<h3 id="{{ entry.name }}">{{ entry.title }}</h3>
|
|
42
|
-
{% else %}
|
|
43
|
-
<h4 id="{{ entry.name }}">{{ entry.title }}</h4>
|
|
44
|
-
{% endif %}
|
|
45
|
-
{{ entry.output }}
|
|
46
|
-
{% endfor %}
|
|
47
|
-
</div>
|
|
48
|
-
</div>
|
package/jest-browser.config.js
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
module.exports = {
|
|
2
|
-
modulePathIgnorePatterns: [
|
|
3
|
-
"<rootDir>/build/",
|
|
4
|
-
"<rootDir>/lib/",
|
|
5
|
-
"<rootDir>/_site/",
|
|
6
|
-
"<rootDir>/static/",
|
|
7
|
-
],
|
|
8
|
-
preset: "jest-playwright-preset",
|
|
9
|
-
testRegex: "\\/src\\/playwright\\/.*\\.test\\.ts",
|
|
10
|
-
setupFilesAfterEnv: ["expect-playwright", "givens/setup.js"],
|
|
11
|
-
transform: {
|
|
12
|
-
"^.+\\.ts$": "ts-jest",
|
|
13
|
-
},
|
|
14
|
-
coveragePathIgnorePatterns: [
|
|
15
|
-
"<rootDir>/node_modules/",
|
|
16
|
-
"<rootDir>/src/playwright/",
|
|
17
|
-
],
|
|
18
|
-
};
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
module.exports = {
|
|
2
|
-
devices: [
|
|
3
|
-
{
|
|
4
|
-
name: "Desktop",
|
|
5
|
-
deviceScaleFactor: 1,
|
|
6
|
-
hasTouch: false,
|
|
7
|
-
isMobile: false,
|
|
8
|
-
userAgent: "Chrome",
|
|
9
|
-
viewport: {
|
|
10
|
-
width: 800,
|
|
11
|
-
height: 600,
|
|
12
|
-
},
|
|
13
|
-
},
|
|
14
|
-
"iPhone 6",
|
|
15
|
-
],
|
|
16
|
-
launchOptions: {
|
|
17
|
-
headless: true,
|
|
18
|
-
chromiumSandbox: false,
|
|
19
|
-
},
|
|
20
|
-
collectCoverage: true,
|
|
21
|
-
};
|
package/jest.config.js
DELETED
|
@@ -1,223 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
-
function step(op) {
|
|
16
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
-
while (_) try {
|
|
18
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
-
switch (op[0]) {
|
|
21
|
-
case 0: case 1: t = op; break;
|
|
22
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
-
default:
|
|
26
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
-
if (t[2]) _.ops.pop();
|
|
31
|
-
_.trys.pop(); continue;
|
|
32
|
-
}
|
|
33
|
-
op = body.call(thisArg, _);
|
|
34
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
exports.__esModule = true;
|
|
39
|
-
exports.dragAndDrop = exports.getTreeStructure = exports.selectNode = exports.openNode = exports.findNodeElement = exports.findTitleElement = exports.expectToBeClosed = exports.expectToBeOpen = exports.expectToBeSelected = void 0;
|
|
40
|
-
var expectToBeSelected = function (handle) { return __awaiter(void 0, void 0, void 0, function () {
|
|
41
|
-
var isSelected;
|
|
42
|
-
return __generator(this, function (_a) {
|
|
43
|
-
switch (_a.label) {
|
|
44
|
-
case 0: return [4 /*yield*/, isNodeSelected(handle)];
|
|
45
|
-
case 1:
|
|
46
|
-
isSelected = _a.sent();
|
|
47
|
-
expect(isSelected).toBe(true);
|
|
48
|
-
return [2 /*return*/];
|
|
49
|
-
}
|
|
50
|
-
});
|
|
51
|
-
}); };
|
|
52
|
-
exports.expectToBeSelected = expectToBeSelected;
|
|
53
|
-
var expectToBeOpen = function (handle) { return __awaiter(void 0, void 0, void 0, function () {
|
|
54
|
-
var isOpen;
|
|
55
|
-
return __generator(this, function (_a) {
|
|
56
|
-
switch (_a.label) {
|
|
57
|
-
case 0: return [4 /*yield*/, isNodeOpen(handle)];
|
|
58
|
-
case 1:
|
|
59
|
-
isOpen = _a.sent();
|
|
60
|
-
expect(isOpen).toBe(true);
|
|
61
|
-
return [2 /*return*/];
|
|
62
|
-
}
|
|
63
|
-
});
|
|
64
|
-
}); };
|
|
65
|
-
exports.expectToBeOpen = expectToBeOpen;
|
|
66
|
-
var expectToBeClosed = function (handle) { return __awaiter(void 0, void 0, void 0, function () {
|
|
67
|
-
var isOpen;
|
|
68
|
-
return __generator(this, function (_a) {
|
|
69
|
-
switch (_a.label) {
|
|
70
|
-
case 0: return [4 /*yield*/, isNodeOpen(handle)];
|
|
71
|
-
case 1:
|
|
72
|
-
isOpen = _a.sent();
|
|
73
|
-
expect(isOpen).toBe(false);
|
|
74
|
-
return [2 /*return*/];
|
|
75
|
-
}
|
|
76
|
-
});
|
|
77
|
-
}); };
|
|
78
|
-
exports.expectToBeClosed = expectToBeClosed;
|
|
79
|
-
var findTitleElement = function (title) { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
80
|
-
switch (_a.label) {
|
|
81
|
-
case 0: return [4 /*yield*/, findElement("css=.jqtree-title >> text=\"" + title + "\"")];
|
|
82
|
-
case 1: return [2 /*return*/, _a.sent()];
|
|
83
|
-
}
|
|
84
|
-
}); }); };
|
|
85
|
-
exports.findTitleElement = findTitleElement;
|
|
86
|
-
var findNodeElement = function (title) { return __awaiter(void 0, void 0, void 0, function () {
|
|
87
|
-
var titleElement;
|
|
88
|
-
return __generator(this, function (_a) {
|
|
89
|
-
switch (_a.label) {
|
|
90
|
-
case 0: return [4 /*yield*/, exports.findTitleElement(title)];
|
|
91
|
-
case 1:
|
|
92
|
-
titleElement = _a.sent();
|
|
93
|
-
return [4 /*yield*/, titleElement.evaluateHandle(function (el) {
|
|
94
|
-
var li = el.closest("li");
|
|
95
|
-
if (!li) {
|
|
96
|
-
throw Error("Node element not found");
|
|
97
|
-
}
|
|
98
|
-
return li;
|
|
99
|
-
})];
|
|
100
|
-
case 2: return [2 /*return*/, _a.sent()];
|
|
101
|
-
}
|
|
102
|
-
});
|
|
103
|
-
}); };
|
|
104
|
-
exports.findNodeElement = findNodeElement;
|
|
105
|
-
var openNode = function (handle) { return __awaiter(void 0, void 0, void 0, function () {
|
|
106
|
-
var toggler;
|
|
107
|
-
return __generator(this, function (_a) {
|
|
108
|
-
switch (_a.label) {
|
|
109
|
-
case 0: return [4 /*yield*/, findToggler(handle)];
|
|
110
|
-
case 1:
|
|
111
|
-
toggler = _a.sent();
|
|
112
|
-
return [4 /*yield*/, toggler.click()];
|
|
113
|
-
case 2:
|
|
114
|
-
_a.sent();
|
|
115
|
-
return [2 /*return*/];
|
|
116
|
-
}
|
|
117
|
-
});
|
|
118
|
-
}); };
|
|
119
|
-
exports.openNode = openNode;
|
|
120
|
-
var findToggler = function (handle) { return __awaiter(void 0, void 0, void 0, function () {
|
|
121
|
-
var toggler;
|
|
122
|
-
return __generator(this, function (_a) {
|
|
123
|
-
switch (_a.label) {
|
|
124
|
-
case 0: return [4 /*yield*/, handle.$(".jqtree-toggler")];
|
|
125
|
-
case 1:
|
|
126
|
-
toggler = _a.sent();
|
|
127
|
-
if (!toggler) {
|
|
128
|
-
throw Error("Toggler button not found");
|
|
129
|
-
}
|
|
130
|
-
return [2 /*return*/, toggler];
|
|
131
|
-
}
|
|
132
|
-
});
|
|
133
|
-
}); };
|
|
134
|
-
var findElement = function (selector) { return __awaiter(void 0, void 0, void 0, function () {
|
|
135
|
-
var element;
|
|
136
|
-
return __generator(this, function (_a) {
|
|
137
|
-
switch (_a.label) {
|
|
138
|
-
case 0: return [4 /*yield*/, page.$(selector)];
|
|
139
|
-
case 1:
|
|
140
|
-
element = _a.sent();
|
|
141
|
-
if (!element) {
|
|
142
|
-
throw Error("Element not found: " + selector);
|
|
143
|
-
}
|
|
144
|
-
return [2 /*return*/, element];
|
|
145
|
-
}
|
|
146
|
-
});
|
|
147
|
-
}); };
|
|
148
|
-
var isNodeOpen = function (handle) { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
149
|
-
return [2 /*return*/, handle.evaluate(function (el) { return !el.classList.contains("jqtree-closed"); })];
|
|
150
|
-
}); }); };
|
|
151
|
-
var isNodeSelected = function (handle) { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
152
|
-
return [2 /*return*/, handle.evaluate(function (el) { return el.classList.contains("jqtree-selected"); })];
|
|
153
|
-
}); }); };
|
|
154
|
-
var selectNode = function (handle) { return __awaiter(void 0, void 0, void 0, function () {
|
|
155
|
-
var titleHandle;
|
|
156
|
-
return __generator(this, function (_a) {
|
|
157
|
-
switch (_a.label) {
|
|
158
|
-
case 0: return [4 /*yield*/, handle.$(".jqtree-title")];
|
|
159
|
-
case 1:
|
|
160
|
-
titleHandle = _a.sent();
|
|
161
|
-
return [4 /*yield*/, (titleHandle === null || titleHandle === void 0 ? void 0 : titleHandle.click())];
|
|
162
|
-
case 2:
|
|
163
|
-
_a.sent();
|
|
164
|
-
return [2 /*return*/];
|
|
165
|
-
}
|
|
166
|
-
});
|
|
167
|
-
}); };
|
|
168
|
-
exports.selectNode = selectNode;
|
|
169
|
-
var getTreeStructure = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
170
|
-
return __generator(this, function (_a) {
|
|
171
|
-
switch (_a.label) {
|
|
172
|
-
case 0: return [4 /*yield*/, page
|
|
173
|
-
.evaluate("\n function getTreeNode($li) {\n const $div = $li.children(\"div.jqtree-element\");\n const $span = $div.children(\"span.jqtree-title\");\n const name = $span.text();\n const selected = $li.hasClass(\"jqtree-selected\");\n\n if ($li.hasClass(\"jqtree-folder\")) {\n const $ul = $li.children(\"ul.jqtree_common\");\n\n return {\n nodeType: \"folder\",\n children: getChildren($ul),\n name,\n open: !$li.hasClass(\"jqtree-closed\"),\n selected,\n };\n } else {\n return {\n nodeType: \"child\",\n name,\n selected,\n };\n }\n };\n\n function getChildren($ul) {\n return $ul\n .children(\"li.jqtree_common\")\n .map((_, li) => {\n return getTreeNode(jQuery(li))\n })\n .get();\n };\n\n JSON.stringify(window.getChildren(jQuery(\"ul.jqtree-tree\")))\n ")
|
|
174
|
-
.then(function (s) { return JSON.parse(s); })];
|
|
175
|
-
case 1: return [2 /*return*/, _a.sent()];
|
|
176
|
-
}
|
|
177
|
-
});
|
|
178
|
-
}); };
|
|
179
|
-
exports.getTreeStructure = getTreeStructure;
|
|
180
|
-
var getRect = function (handle) { return __awaiter(void 0, void 0, void 0, function () {
|
|
181
|
-
var boundingBox;
|
|
182
|
-
return __generator(this, function (_a) {
|
|
183
|
-
switch (_a.label) {
|
|
184
|
-
case 0: return [4 /*yield*/, handle.boundingBox()];
|
|
185
|
-
case 1:
|
|
186
|
-
boundingBox = _a.sent();
|
|
187
|
-
if (!boundingBox) {
|
|
188
|
-
throw "No bounding box";
|
|
189
|
-
}
|
|
190
|
-
return [2 /*return*/, boundingBox];
|
|
191
|
-
}
|
|
192
|
-
});
|
|
193
|
-
}); };
|
|
194
|
-
var dragAndDrop = function (from, to) { return __awaiter(void 0, void 0, void 0, function () {
|
|
195
|
-
var fromRect, toRect;
|
|
196
|
-
return __generator(this, function (_a) {
|
|
197
|
-
switch (_a.label) {
|
|
198
|
-
case 0: return [4 /*yield*/, exports.findTitleElement(from).then(getRect)];
|
|
199
|
-
case 1:
|
|
200
|
-
fromRect = _a.sent();
|
|
201
|
-
return [4 /*yield*/, exports.findTitleElement(to).then(getRect)];
|
|
202
|
-
case 2:
|
|
203
|
-
toRect = _a.sent();
|
|
204
|
-
return [4 /*yield*/, page.mouse.move(fromRect.x + fromRect.width / 2, fromRect.y + fromRect.height / 2)];
|
|
205
|
-
case 3:
|
|
206
|
-
_a.sent();
|
|
207
|
-
return [4 /*yield*/, page.mouse.down()];
|
|
208
|
-
case 4:
|
|
209
|
-
_a.sent();
|
|
210
|
-
return [4 /*yield*/, page.waitForTimeout(200)];
|
|
211
|
-
case 5:
|
|
212
|
-
_a.sent();
|
|
213
|
-
return [4 /*yield*/, page.mouse.move(toRect.x + toRect.width / 2, toRect.y + toRect.height / 2)];
|
|
214
|
-
case 6:
|
|
215
|
-
_a.sent();
|
|
216
|
-
return [4 /*yield*/, page.mouse.up()];
|
|
217
|
-
case 7:
|
|
218
|
-
_a.sent();
|
|
219
|
-
return [2 /*return*/];
|
|
220
|
-
}
|
|
221
|
-
});
|
|
222
|
-
}); };
|
|
223
|
-
exports.dragAndDrop = dragAndDrop;
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
-
function step(op) {
|
|
16
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
-
while (_) try {
|
|
18
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
-
switch (op[0]) {
|
|
21
|
-
case 0: case 1: t = op; break;
|
|
22
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
-
default:
|
|
26
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
-
if (t[2]) _.ops.pop();
|
|
31
|
-
_.trys.pop(); continue;
|
|
32
|
-
}
|
|
33
|
-
op = body.call(thisArg, _);
|
|
34
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
exports.__esModule = true;
|
|
39
|
-
exports.matchScreenshot = void 0;
|
|
40
|
-
var fs_1 = require("fs");
|
|
41
|
-
var promises_1 = require("fs/promises");
|
|
42
|
-
var path = require("path");
|
|
43
|
-
var pngjs_1 = require("pngjs");
|
|
44
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-var-requires
|
|
45
|
-
var pixelmatch = require("pixelmatch");
|
|
46
|
-
var matchScreenshot = function (testName) { return __awaiter(void 0, void 0, void 0, function () {
|
|
47
|
-
var screenshotBuffer, expectedImagePath, expectedImage, screenshot, _a, adjustedExpectedImage, adjustedScreenshot, width, height, diff, mismatchedPixels, percentage;
|
|
48
|
-
return __generator(this, function (_b) {
|
|
49
|
-
switch (_b.label) {
|
|
50
|
-
case 0: return [4 /*yield*/, page.screenshot()];
|
|
51
|
-
case 1:
|
|
52
|
-
screenshotBuffer = _b.sent();
|
|
53
|
-
expectedImagePath = path.join(__dirname, "screenshots/" + testName + "_" + (deviceName || "unknown") + ".png");
|
|
54
|
-
if (!!fs_1.existsSync(expectedImagePath)) return [3 /*break*/, 3];
|
|
55
|
-
return [4 /*yield*/, saveFile(expectedImagePath, screenshotBuffer)];
|
|
56
|
-
case 2:
|
|
57
|
-
_b.sent();
|
|
58
|
-
return [2 /*return*/];
|
|
59
|
-
case 3: return [4 /*yield*/, readPng(expectedImagePath)];
|
|
60
|
-
case 4:
|
|
61
|
-
expectedImage = _b.sent();
|
|
62
|
-
screenshot = pngjs_1.PNG.sync.read(screenshotBuffer);
|
|
63
|
-
_a = getImagesOfEqualSize(expectedImage, screenshot), adjustedExpectedImage = _a[0], adjustedScreenshot = _a[1];
|
|
64
|
-
width = adjustedExpectedImage.width, height = adjustedExpectedImage.height;
|
|
65
|
-
diff = new pngjs_1.PNG({ width: width, height: height });
|
|
66
|
-
mismatchedPixels = pixelmatch(adjustedExpectedImage.data, adjustedScreenshot.data, diff.data, width, height, {});
|
|
67
|
-
percentage = Math.pow((mismatchedPixels / diff.width / diff.height), 0.5);
|
|
68
|
-
if (!(percentage >= 0.1)) return [3 /*break*/, 6];
|
|
69
|
-
return [4 /*yield*/, saveFile(path.join(__dirname, testName + ".png"), pngjs_1.PNG.sync.write(adjustedScreenshot))];
|
|
70
|
-
case 5:
|
|
71
|
-
_b.sent();
|
|
72
|
-
_b.label = 6;
|
|
73
|
-
case 6:
|
|
74
|
-
expect(percentage).toBeLessThan(0.1);
|
|
75
|
-
return [2 /*return*/];
|
|
76
|
-
}
|
|
77
|
-
});
|
|
78
|
-
}); };
|
|
79
|
-
exports.matchScreenshot = matchScreenshot;
|
|
80
|
-
var saveFile = function (filePath, buffer) { return __awaiter(void 0, void 0, void 0, function () {
|
|
81
|
-
var file;
|
|
82
|
-
return __generator(this, function (_a) {
|
|
83
|
-
switch (_a.label) {
|
|
84
|
-
case 0: return [4 /*yield*/, promises_1.open(filePath, "w")];
|
|
85
|
-
case 1:
|
|
86
|
-
file = _a.sent();
|
|
87
|
-
_a.label = 2;
|
|
88
|
-
case 2:
|
|
89
|
-
_a.trys.push([2, , 4, 6]);
|
|
90
|
-
return [4 /*yield*/, promises_1.writeFile(filePath, buffer)];
|
|
91
|
-
case 3:
|
|
92
|
-
_a.sent();
|
|
93
|
-
return [3 /*break*/, 6];
|
|
94
|
-
case 4: return [4 /*yield*/, file.close()];
|
|
95
|
-
case 5:
|
|
96
|
-
_a.sent();
|
|
97
|
-
return [7 /*endfinally*/];
|
|
98
|
-
case 6: return [2 /*return*/];
|
|
99
|
-
}
|
|
100
|
-
});
|
|
101
|
-
}); };
|
|
102
|
-
var readPng = function (filePath) { return __awaiter(void 0, void 0, void 0, function () {
|
|
103
|
-
var buffer;
|
|
104
|
-
return __generator(this, function (_a) {
|
|
105
|
-
switch (_a.label) {
|
|
106
|
-
case 0: return [4 /*yield*/, promises_1.readFile(filePath)];
|
|
107
|
-
case 1:
|
|
108
|
-
buffer = _a.sent();
|
|
109
|
-
return [2 /*return*/, pngjs_1.PNG.sync.read(buffer)];
|
|
110
|
-
}
|
|
111
|
-
});
|
|
112
|
-
}); };
|
|
113
|
-
var adjustImageSize = function (image, width, height) {
|
|
114
|
-
if (image.width === width && image.height === height) {
|
|
115
|
-
return image;
|
|
116
|
-
}
|
|
117
|
-
var adjustedImage = new pngjs_1.PNG({ width: width, height: height });
|
|
118
|
-
pngjs_1.PNG.bitblt(image, adjustedImage, 0, 0, image.width, image.height, 0, 0);
|
|
119
|
-
return adjustedImage;
|
|
120
|
-
};
|
|
121
|
-
var getImagesOfEqualSize = function (image1, image2) {
|
|
122
|
-
var width = Math.max(image1.width, image2.width);
|
|
123
|
-
var height = Math.max(image1.height, image2.height);
|
|
124
|
-
return [
|
|
125
|
-
adjustImageSize(image1, width, height),
|
|
126
|
-
adjustImageSize(image2, width, height),
|
|
127
|
-
];
|
|
128
|
-
};
|
package/production
DELETED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|