@spectrum-web-components/vrt-compare 0.1.18-devmode2.0 → 0.2.0
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/onion-skinner.js +1 -2
- package/onion-skinner.js.map +1 -1
- package/package.json +11 -11
- package/src/OnionSkinner.js +4 -64
- package/src/OnionSkinner.js.map +1 -1
- package/src/VrtCompare.js +43 -229
- package/src/VrtCompare.js.map +1 -1
- package/src/index.js +1 -1
- package/src/index.js.map +1 -1
- package/vrt-compare.js +1 -2
- package/vrt-compare.js.map +1 -1
package/onion-skinner.js
CHANGED
package/onion-skinner.js.map
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["onion-skinner.ts"],
|
|
4
4
|
"sourcesContent": ["/*\nCopyright 2020 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\n\nimport { OnionSkinner } from './src/OnionSkinner.js';\n\ncustomElements.define('onion-skinner', OnionSkinner);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'onion-skinner': OnionSkinner;\n }\n}\n"],
|
|
5
|
-
"mappings": "AAYA
|
|
5
|
+
"mappings": "AAYA,qDAEA,eAAe,OAAO,gBAAiB,CAAY",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@spectrum-web-components/vrt-compare",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -61,15 +61,15 @@
|
|
|
61
61
|
"lit-html"
|
|
62
62
|
],
|
|
63
63
|
"dependencies": {
|
|
64
|
-
"@spectrum-web-components/action-bar": "^0.
|
|
65
|
-
"@spectrum-web-components/action-button": "^0.
|
|
66
|
-
"@spectrum-web-components/action-group": "^0.
|
|
67
|
-
"@spectrum-web-components/base": "^0.
|
|
68
|
-
"@spectrum-web-components/icons-workflow": "^0.
|
|
69
|
-
"@spectrum-web-components/shared": "^0.
|
|
70
|
-
"@spectrum-web-components/split-view": "^0.
|
|
71
|
-
"@spectrum-web-components/styles": "^0.
|
|
72
|
-
"@spectrum-web-components/theme": "^0.
|
|
64
|
+
"@spectrum-web-components/action-bar": "^0.5.0",
|
|
65
|
+
"@spectrum-web-components/action-button": "^0.10.0",
|
|
66
|
+
"@spectrum-web-components/action-group": "^0.11.0",
|
|
67
|
+
"@spectrum-web-components/base": "^0.7.0",
|
|
68
|
+
"@spectrum-web-components/icons-workflow": "^0.9.0",
|
|
69
|
+
"@spectrum-web-components/shared": "^0.15.0",
|
|
70
|
+
"@spectrum-web-components/split-view": "^0.5.0",
|
|
71
|
+
"@spectrum-web-components/styles": "^0.16.0",
|
|
72
|
+
"@spectrum-web-components/theme": "^0.14.0",
|
|
73
73
|
"tslib": "^2.0.0"
|
|
74
74
|
},
|
|
75
75
|
"types": "./src/index.d.ts",
|
|
@@ -80,5 +80,5 @@
|
|
|
80
80
|
"./vrt-compare.js",
|
|
81
81
|
"./vrt-compare.ts"
|
|
82
82
|
],
|
|
83
|
-
"gitHead": "
|
|
83
|
+
"gitHead": "05c81318844160db3f8156144106e643507fef97"
|
|
84
84
|
}
|
package/src/OnionSkinner.js
CHANGED
|
@@ -1,53 +1,4 @@
|
|
|
1
|
-
var
|
|
2
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
-
var __decorateClass = (decorators, target, key, kind) => {
|
|
4
|
-
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
|
|
5
|
-
for (var i = decorators.length - 1, decorator; i >= 0; i--)
|
|
6
|
-
if (decorator = decorators[i])
|
|
7
|
-
result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
8
|
-
if (kind && result)
|
|
9
|
-
__defProp(target, key, result);
|
|
10
|
-
return result;
|
|
11
|
-
};
|
|
12
|
-
import { css, html, SpectrumElement } from "@spectrum-web-components/base";
|
|
13
|
-
import {
|
|
14
|
-
property,
|
|
15
|
-
queryAssignedNodes
|
|
16
|
-
} from "@spectrum-web-components/base/src/decorators.js";
|
|
17
|
-
import "@spectrum-web-components/slider/sp-slider.js";
|
|
18
|
-
import "@spectrum-web-components/thumbnail/sp-thumbnail.js";
|
|
19
|
-
import "@spectrum-web-components/overlay/sync/overlay-trigger.js";
|
|
20
|
-
import "@spectrum-web-components/tooltip/sp-tooltip.js";
|
|
21
|
-
export class OnionSkinner extends SpectrumElement {
|
|
22
|
-
constructor() {
|
|
23
|
-
super(...arguments);
|
|
24
|
-
this.onionLevel = 0.5;
|
|
25
|
-
}
|
|
26
|
-
handleOnionInput(event) {
|
|
27
|
-
this.onionLevel = event.target.value;
|
|
28
|
-
}
|
|
29
|
-
handleSlotchange() {
|
|
30
|
-
const images = [...this.assignments].filter((node) => node.tagName && node.matches("img"));
|
|
31
|
-
if (images[0]) {
|
|
32
|
-
this.leftThumbnail = images[0].cloneNode();
|
|
33
|
-
this.leftThumbnail.removeAttribute("slot");
|
|
34
|
-
}
|
|
35
|
-
if (images[1]) {
|
|
36
|
-
this.rightThumbnail = images[1].cloneNode();
|
|
37
|
-
this.rightThumbnail.removeAttribute("slot");
|
|
38
|
-
}
|
|
39
|
-
if (images.length) {
|
|
40
|
-
this.requestUpdate();
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
allLeft() {
|
|
44
|
-
this.onionLevel = 0;
|
|
45
|
-
}
|
|
46
|
-
allRight() {
|
|
47
|
-
this.onionLevel = 1;
|
|
48
|
-
}
|
|
49
|
-
render() {
|
|
50
|
-
return html`
|
|
1
|
+
var n=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var a=(s,e,i,l)=>{for(var t=l>1?void 0:l?m(e,i):e,r=s.length-1,o;r>=0;r--)(o=s[r])&&(t=(l?o(e,i,t):o(t))||t);return l&&t&&n(e,i,t),t};import{css as h,html as p,SpectrumElement as g}from"@spectrum-web-components/base";import{property as v,queryAssignedNodes as c}from"@spectrum-web-components/base/src/decorators.js";import"@spectrum-web-components/slider/sp-slider.js";import"@spectrum-web-components/thumbnail/sp-thumbnail.js";import"@spectrum-web-components/overlay/sync/overlay-trigger.js";import"@spectrum-web-components/tooltip/sp-tooltip.js";export class OnionSkinner extends g{constructor(){super(...arguments);this.onionLevel=.5}handleOnionInput(e){this.onionLevel=e.target.value}handleSlotchange(){const e=[...this.assignments].filter(i=>i.tagName&&i.matches("img"));e[0]&&(this.leftThumbnail=e[0].cloneNode(),this.leftThumbnail.removeAttribute("slot")),e[1]&&(this.rightThumbnail=e[1].cloneNode(),this.rightThumbnail.removeAttribute("slot")),e.length&&this.requestUpdate()}allLeft(){this.onionLevel=0}allRight(){this.onionLevel=1}render(){return p`
|
|
51
2
|
<slot
|
|
52
3
|
@slotchange=${this.handleSlotchange}
|
|
53
4
|
style="--onion-level: ${this.onionLevel}"
|
|
@@ -70,7 +21,7 @@ export class OnionSkinner extends SpectrumElement {
|
|
|
70
21
|
max="1"
|
|
71
22
|
step="0.001"
|
|
72
23
|
.value=${this.onionLevel}
|
|
73
|
-
.getAriaValueText=${()
|
|
24
|
+
.getAriaValueText=${()=>""}
|
|
74
25
|
@input=${this.handleOnionInput}
|
|
75
26
|
></sp-slider>
|
|
76
27
|
<overlay-trigger placement="top">
|
|
@@ -86,11 +37,7 @@ export class OnionSkinner extends SpectrumElement {
|
|
|
86
37
|
</sp-tooltip>
|
|
87
38
|
</overlay-trigger>
|
|
88
39
|
</div>
|
|
89
|
-
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
OnionSkinner.styles = [
|
|
93
|
-
css`
|
|
40
|
+
`}}OnionSkinner.styles=[h`
|
|
94
41
|
:host {
|
|
95
42
|
display: grid;
|
|
96
43
|
grid-template-areas: 'main';
|
|
@@ -113,12 +60,5 @@ OnionSkinner.styles = [
|
|
|
113
60
|
sp-slider {
|
|
114
61
|
flex-grow: 1;
|
|
115
62
|
}
|
|
116
|
-
`
|
|
117
|
-
];
|
|
118
|
-
__decorateClass([
|
|
119
|
-
property({ type: Number })
|
|
120
|
-
], OnionSkinner.prototype, "onionLevel", 2);
|
|
121
|
-
__decorateClass([
|
|
122
|
-
queryAssignedNodes("", true)
|
|
123
|
-
], OnionSkinner.prototype, "assignments", 2);
|
|
63
|
+
`],a([v({type:Number})],OnionSkinner.prototype,"onionLevel",2),a([c("",!0)],OnionSkinner.prototype,"assignments",2);
|
|
124
64
|
//# sourceMappingURL=OnionSkinner.js.map
|
package/src/OnionSkinner.js.map
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["OnionSkinner.ts"],
|
|
4
4
|
"sourcesContent": ["/*\nCopyright 2020 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\nimport { css, html, SpectrumElement } from '@spectrum-web-components/base';\nimport {\n property,\n queryAssignedNodes,\n} from '@spectrum-web-components/base/src/decorators.js';\nimport { Slider } from '@spectrum-web-components/slider';\nimport '@spectrum-web-components/slider/sp-slider.js';\nimport '@spectrum-web-components/thumbnail/sp-thumbnail.js';\nimport '@spectrum-web-components/overlay/sync/overlay-trigger.js';\nimport '@spectrum-web-components/tooltip/sp-tooltip.js';\n\nexport class OnionSkinner extends SpectrumElement {\n @property({ type: Number }) public onionLevel = 0.5;\n\n @queryAssignedNodes('', true)\n private assignments!: NodeListOf<HTMLImageElement>;\n\n private leftThumbnail?: HTMLImageElement;\n private rightThumbnail?: HTMLImageElement;\n\n private handleOnionInput(event: Event & { target: Slider }) {\n this.onionLevel = event.target.value;\n }\n\n private handleSlotchange() {\n const images = [...this.assignments].filter(\n (node) => node.tagName && node.matches('img')\n );\n if (images[0]) {\n this.leftThumbnail = images[0].cloneNode() as HTMLImageElement;\n this.leftThumbnail.removeAttribute('slot');\n }\n if (images[1]) {\n this.rightThumbnail = images[1].cloneNode() as HTMLImageElement;\n this.rightThumbnail.removeAttribute('slot');\n }\n if (images.length) {\n this.requestUpdate();\n }\n }\n\n private allLeft() {\n this.onionLevel = 0;\n }\n\n private allRight() {\n this.onionLevel = 1;\n }\n\n override render() {\n return html`\n <slot\n @slotchange=${this.handleSlotchange}\n style=\"--onion-level: ${this.onionLevel}\"\n ></slot>\n <div class=\"controls\">\n <overlay-trigger placement=\"top\">\n <sp-thumbnail\n slot=\"trigger\"\n size=\"xl\"\n @click=${this.allLeft}\n >\n ${this.leftThumbnail}\n </sp-thumbnail>\n <sp-tooltip slot=\"hover-content\">\n Baseline screenshot\n </sp-tooltip>\n </overlay-trigger>\n <sp-slider\n min=\"0\"\n max=\"1\"\n step=\"0.001\"\n .value=${this.onionLevel}\n .getAriaValueText=${() => ''}\n @input=${this.handleOnionInput}\n ></sp-slider>\n <overlay-trigger placement=\"top\">\n <sp-thumbnail\n slot=\"trigger\"\n size=\"xl\"\n @click=${this.allRight}\n >\n ${this.rightThumbnail}\n </sp-thumbnail>\n <sp-tooltip slot=\"hover-content\">\n Current screenshot\n </sp-tooltip>\n </overlay-trigger>\n </div>\n `;\n }\n\n static override styles = [\n css`\n :host {\n display: grid;\n grid-template-areas: 'main';\n }\n ::slotted(*) {\n grid-area: main;\n }\n ::slotted(:first-child) {\n opacity: calc(1 - var(--onion-level));\n }\n ::slotted(:last-child) {\n opacity: var(--onion-level);\n }\n .controls {\n display: flex;\n gap: 1em;\n margin: 0.25em;\n align-items: center;\n }\n sp-slider {\n flex-grow: 1;\n }\n `,\n ];\n}\n"],
|
|
5
|
-
"mappings": "
|
|
5
|
+
"mappings": "wMAWA,mFACA,mGAKA,qDACA,2DACA,iEACA,uDAEO,aAAM,oBAAqB,EAAgB,CAA3C,kCACgC,gBAAa,GAQxC,iBAAiB,EAAmC,CACxD,KAAK,WAAa,EAAM,OAAO,KACnC,CAEQ,kBAAmB,CACvB,KAAM,GAAS,CAAC,GAAG,KAAK,WAAW,EAAE,OACjC,AAAC,GAAS,EAAK,SAAW,EAAK,QAAQ,KAAK,CAChD,EACA,AAAI,EAAO,IACP,MAAK,cAAgB,EAAO,GAAG,UAAU,EACzC,KAAK,cAAc,gBAAgB,MAAM,GAEzC,EAAO,IACP,MAAK,eAAiB,EAAO,GAAG,UAAU,EAC1C,KAAK,eAAe,gBAAgB,MAAM,GAE1C,EAAO,QACP,KAAK,cAAc,CAE3B,CAEQ,SAAU,CACd,KAAK,WAAa,CACtB,CAEQ,UAAW,CACf,KAAK,WAAa,CACtB,CAES,QAAS,CACd,MAAO;AAAA;AAAA,8BAEe,KAAK;AAAA,wCACK,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iCAOZ,KAAK;AAAA;AAAA,0BAEZ,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,6BAUF,KAAK;AAAA,wCACM,IAAM;AAAA,6BACjB,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iCAMD,KAAK;AAAA;AAAA,0BAEZ,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAQ3B,CA4BJ,CA1BoB,AAjFb,aAiFa,OAAS,CACrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAwBJ,EAzGmC,GAAnC,AAAC,EAAS,CAAE,KAAM,MAAO,CAAC,GAAS,AADhC,aACgC,0BAG3B,GADR,AAAC,EAAmB,GAAI,EAAI,GACpB,AAJL,aAIK",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/src/VrtCompare.js
CHANGED
|
@@ -1,192 +1,33 @@
|
|
|
1
|
-
var
|
|
2
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
-
var __decorateClass = (decorators, target, key, kind) => {
|
|
4
|
-
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
|
|
5
|
-
for (var i = decorators.length - 1, decorator; i >= 0; i--)
|
|
6
|
-
if (decorator = decorators[i])
|
|
7
|
-
result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
8
|
-
if (kind && result)
|
|
9
|
-
__defProp(target, key, result);
|
|
10
|
-
return result;
|
|
11
|
-
};
|
|
12
|
-
import {
|
|
13
|
-
css,
|
|
14
|
-
html,
|
|
15
|
-
nothing,
|
|
16
|
-
SpectrumElement
|
|
17
|
-
} from "@spectrum-web-components/base";
|
|
18
|
-
import { property } from "@spectrum-web-components/base/src/decorators.js";
|
|
19
|
-
import { ObserveSlotPresence } from "@spectrum-web-components/shared";
|
|
20
|
-
import bodyStyles from "@spectrum-web-components/styles/body.js";
|
|
21
|
-
import "@spectrum-web-components/action-button/sp-action-button.js";
|
|
22
|
-
import "@spectrum-web-components/action-group/sp-action-group.js";
|
|
23
|
-
import "@spectrum-web-components/split-view/sp-split-view.js";
|
|
24
|
-
import "@spectrum-web-components/icons-workflow/icons/sp-icon-alert.js";
|
|
25
|
-
import "@spectrum-web-components/icons-workflow/icons/sp-icon-zoom-in.js";
|
|
26
|
-
import "@spectrum-web-components/icons-workflow/icons/sp-icon-zoom-out.js";
|
|
27
|
-
import "@spectrum-web-components/icons-workflow/icons/sp-icon-refresh.js";
|
|
28
|
-
import "@spectrum-web-components/action-bar/sp-action-bar.js";
|
|
29
|
-
import "@spectrum-web-components/progress-circle/sp-progress-circle.js";
|
|
30
|
-
import "../onion-skinner.js";
|
|
31
|
-
export class VrtCompare extends ObserveSlotPresence(SpectrumElement, [
|
|
32
|
-
'[slot="actual"]',
|
|
33
|
-
'[slot="baseline"]',
|
|
34
|
-
'[slot="diff"]'
|
|
35
|
-
]) {
|
|
36
|
-
constructor() {
|
|
37
|
-
super(...arguments);
|
|
38
|
-
this.view = "scrubber";
|
|
39
|
-
this.zoom = 1;
|
|
40
|
-
this.imagesLoaded = false;
|
|
41
|
-
this._loadingImages = false;
|
|
42
|
-
}
|
|
43
|
-
get hasActual() {
|
|
44
|
-
return this.getSlotContentPresence('[slot="actual"]');
|
|
45
|
-
}
|
|
46
|
-
get hasBaseline() {
|
|
47
|
-
return this.getSlotContentPresence('[slot="baseline"]');
|
|
48
|
-
}
|
|
49
|
-
get hasDiff() {
|
|
50
|
-
return this.getSlotContentPresence('[slot="diff"]');
|
|
51
|
-
}
|
|
52
|
-
get canCompare() {
|
|
53
|
-
return this.hasActual && this.hasBaseline;
|
|
54
|
-
}
|
|
55
|
-
handleChange(event) {
|
|
56
|
-
const view = event.target.selected[0];
|
|
57
|
-
if (view) {
|
|
58
|
-
this.view = view;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
handleZoomIn() {
|
|
62
|
-
this.zoom += 0.1;
|
|
63
|
-
}
|
|
64
|
-
handleZoomClear() {
|
|
65
|
-
this.zoom = 1;
|
|
66
|
-
}
|
|
67
|
-
handleZoomOut() {
|
|
68
|
-
this.zoom -= 0.1;
|
|
69
|
-
}
|
|
70
|
-
get error() {
|
|
71
|
-
return html`
|
|
1
|
+
var p=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var l=(c,i,t,a)=>{for(var s=a>1?void 0:a?h(i,t):i,o=c.length-1,r;o>=0;o--)(r=c[o])&&(s=(a?r(i,t,s):r(s))||s);return a&&s&&p(i,t,s),s};import{css as u,html as e,nothing as n,SpectrumElement as m}from"@spectrum-web-components/base";import{property as d}from"@spectrum-web-components/base/src/decorators.js";import{ObserveSlotPresence as g}from"@spectrum-web-components/shared";import b from"@spectrum-web-components/styles/body.js";import"@spectrum-web-components/action-button/sp-action-button.js";import"@spectrum-web-components/action-group/sp-action-group.js";import"@spectrum-web-components/split-view/sp-split-view.js";import"@spectrum-web-components/icons-workflow/icons/sp-icon-alert.js";import"@spectrum-web-components/icons-workflow/icons/sp-icon-zoom-in.js";import"@spectrum-web-components/icons-workflow/icons/sp-icon-zoom-out.js";import"@spectrum-web-components/icons-workflow/icons/sp-icon-refresh.js";import"@spectrum-web-components/action-bar/sp-action-bar.js";import"@spectrum-web-components/progress-circle/sp-progress-circle.js";import"../onion-skinner.js";export class VrtCompare extends g(m,['[slot="actual"]','[slot="baseline"]','[slot="diff"]']){constructor(){super(...arguments);this.view="scrubber";this.zoom=1;this.imagesLoaded=!1;this._loadingImages=!1}get hasActual(){return this.getSlotContentPresence('[slot="actual"]')}get hasBaseline(){return this.getSlotContentPresence('[slot="baseline"]')}get hasDiff(){return this.getSlotContentPresence('[slot="diff"]')}get canCompare(){return this.hasActual&&this.hasBaseline}handleChange(i){const t=i.target.selected[0];t&&(this.view=t)}handleZoomIn(){this.zoom+=.1}handleZoomClear(){this.zoom=1}handleZoomOut(){this.zoom-=.1}get error(){return e`
|
|
72
2
|
<sp-icon-alert class="icon" size="xl"></sp-icon-alert>
|
|
73
3
|
<p class="spectrum-Body spectrum-Body--sizeXL">
|
|
74
4
|
Please be sure to supply some combination of actual, baseline,
|
|
75
5
|
and diff screenshots for review.
|
|
76
6
|
</p>
|
|
77
|
-
|
|
78
|
-
}
|
|
79
|
-
get actual() {
|
|
80
|
-
return html`
|
|
7
|
+
`}get actual(){return e`
|
|
81
8
|
<div class="view actual">
|
|
82
9
|
<slot name="actual"></slot>
|
|
83
10
|
</div>
|
|
84
|
-
|
|
85
|
-
}
|
|
86
|
-
get baseline() {
|
|
87
|
-
return html`
|
|
11
|
+
`}get baseline(){return e`
|
|
88
12
|
<div class="view baseline">
|
|
89
13
|
<slot name="baseline"></slot>
|
|
90
14
|
</div>
|
|
91
|
-
|
|
92
|
-
}
|
|
93
|
-
get diff() {
|
|
94
|
-
return html`
|
|
15
|
+
`}get diff(){return e`
|
|
95
16
|
<div class="view diff">
|
|
96
17
|
<slot name="diff"></slot>
|
|
97
18
|
</div>
|
|
98
|
-
|
|
99
|
-
}
|
|
100
|
-
get scrubber() {
|
|
101
|
-
return html`
|
|
19
|
+
`}get scrubber(){return e`
|
|
102
20
|
<sp-split-view resizable primary-size="50%">
|
|
103
21
|
${this.baseline} ${this.actual}
|
|
104
22
|
</sp-split-view>
|
|
105
|
-
|
|
106
|
-
}
|
|
107
|
-
get sidebyside() {
|
|
108
|
-
return html`
|
|
23
|
+
`}get sidebyside(){return e`
|
|
109
24
|
${this.baseline} ${this.actual}
|
|
110
|
-
|
|
111
|
-
}
|
|
112
|
-
get onion() {
|
|
113
|
-
return html`
|
|
25
|
+
`}get onion(){return e`
|
|
114
26
|
<onion-skinner>
|
|
115
27
|
<slot name="baseline"></slot>
|
|
116
28
|
<slot name="actual"></slot>
|
|
117
29
|
</onion-skinner>
|
|
118
|
-
|
|
119
|
-
}
|
|
120
|
-
get renderView() {
|
|
121
|
-
switch (this.view) {
|
|
122
|
-
case "error":
|
|
123
|
-
return this.error;
|
|
124
|
-
case "actual":
|
|
125
|
-
return this.actual;
|
|
126
|
-
case "baseline":
|
|
127
|
-
return this.baseline;
|
|
128
|
-
case "diff":
|
|
129
|
-
return this.diff;
|
|
130
|
-
case "onion":
|
|
131
|
-
return this.onion;
|
|
132
|
-
case "sidebyside":
|
|
133
|
-
return this.sidebyside;
|
|
134
|
-
case "scrubber":
|
|
135
|
-
default:
|
|
136
|
-
return this.scrubber;
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
get viewFallback() {
|
|
140
|
-
if (this.canCompare) {
|
|
141
|
-
return "scrubber";
|
|
142
|
-
} else if (this.hasActual) {
|
|
143
|
-
return "actual";
|
|
144
|
-
} else if (this.hasBaseline) {
|
|
145
|
-
return "baseline";
|
|
146
|
-
} else if (this.hasDiff) {
|
|
147
|
-
return "diff";
|
|
148
|
-
} else {
|
|
149
|
-
return "error";
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
async prepImages(event) {
|
|
153
|
-
const slot = event.target;
|
|
154
|
-
if (this._loadingImages || !slot.assignedNodes().length) {
|
|
155
|
-
return;
|
|
156
|
-
}
|
|
157
|
-
this._loadingImages = true;
|
|
158
|
-
this.imagesLoaded = false;
|
|
159
|
-
const images = [...this.querySelectorAll("img")];
|
|
160
|
-
if (!images.length) {
|
|
161
|
-
this.imagesLoaded = true;
|
|
162
|
-
this._loadingImages = false;
|
|
163
|
-
return;
|
|
164
|
-
}
|
|
165
|
-
const imageLoadPromises = images.map((img) => {
|
|
166
|
-
if (img.naturalWidth) {
|
|
167
|
-
this.style.setProperty("--image-width", `${img.naturalWidth}px`);
|
|
168
|
-
return Promise.resolve();
|
|
169
|
-
}
|
|
170
|
-
return new Promise((resolve) => {
|
|
171
|
-
img.addEventListener("load", () => {
|
|
172
|
-
this.style.setProperty("--image-width", `${img.naturalWidth}px`);
|
|
173
|
-
resolve(true);
|
|
174
|
-
});
|
|
175
|
-
});
|
|
176
|
-
});
|
|
177
|
-
await Promise.all(imageLoadPromises);
|
|
178
|
-
this.imagesLoaded = true;
|
|
179
|
-
this._loadingImages = false;
|
|
180
|
-
}
|
|
181
|
-
shouldUpdate() {
|
|
182
|
-
if (this.view === "error" || this.view === "actual" && !this.hasActual || this.view === "baseline" && !this.hasBaseline || this.view === "diff" && !this.hasDiff || (this.view === "onion" || this.view === "sidebyside" || this.view === "scrubber") && !this.canCompare) {
|
|
183
|
-
this.view = this.viewFallback;
|
|
184
|
-
}
|
|
185
|
-
return true;
|
|
186
|
-
}
|
|
187
|
-
render() {
|
|
188
|
-
if (this._loadingImages) {
|
|
189
|
-
return html`
|
|
30
|
+
`}get renderView(){switch(this.view){case"error":return this.error;case"actual":return this.actual;case"baseline":return this.baseline;case"diff":return this.diff;case"onion":return this.onion;case"sidebyside":return this.sidebyside;case"scrubber":default:return this.scrubber}}get viewFallback(){return this.canCompare?"scrubber":this.hasActual?"actual":this.hasBaseline?"baseline":this.hasDiff?"diff":"error"}async prepImages(i){const t=i.target;if(this._loadingImages||!t.assignedNodes().length)return;this._loadingImages=!0,this.imagesLoaded=!1;const a=[...this.querySelectorAll("img")];if(!a.length){this.imagesLoaded=!0,this._loadingImages=!1;return}const s=a.map(o=>o.naturalWidth?(this.style.setProperty("--image-width",`${o.naturalWidth}px`),Promise.resolve()):new Promise(r=>{o.addEventListener("load",()=>{this.style.setProperty("--image-width",`${o.naturalWidth}px`),r(!0)})}));await Promise.all(s),this.imagesLoaded=!0,this._loadingImages=!1}shouldUpdate(){return(this.view==="error"||this.view==="actual"&&!this.hasActual||this.view==="baseline"&&!this.hasBaseline||this.view==="diff"&&!this.hasDiff||(this.view==="onion"||this.view==="sidebyside"||this.view==="scrubber")&&!this.canCompare)&&(this.view=this.viewFallback),!0}render(){return this._loadingImages?e`
|
|
190
31
|
<sp-progress-circle indeterminate></sp-progress-circle>
|
|
191
32
|
<slot
|
|
192
33
|
name="actual"
|
|
@@ -199,88 +40,68 @@ export class VrtCompare extends ObserveSlotPresence(SpectrumElement, [
|
|
|
199
40
|
hidden
|
|
200
41
|
></slot>
|
|
201
42
|
<slot name="diff" @slotchange=${this.prepImages} hidden></slot>
|
|
202
|
-
|
|
203
|
-
}
|
|
204
|
-
if (!this.imagesLoaded) {
|
|
205
|
-
return html`
|
|
206
|
-
<p class="spectrum-Body spectrum-Body--sizeXL">
|
|
207
|
-
Choose a test to review on the left...
|
|
208
|
-
</p>
|
|
209
|
-
<slot
|
|
210
|
-
name="actual"
|
|
211
|
-
@slotchange=${this.prepImages}
|
|
212
|
-
hidden
|
|
213
|
-
></slot>
|
|
214
|
-
<slot
|
|
215
|
-
name="baseline"
|
|
216
|
-
@slotchange=${this.prepImages}
|
|
217
|
-
hidden
|
|
218
|
-
></slot>
|
|
219
|
-
<slot name="diff" @slotchange=${this.prepImages} hidden></slot>
|
|
220
|
-
`;
|
|
221
|
-
}
|
|
222
|
-
return html`
|
|
43
|
+
`:this.imagesLoaded?e`
|
|
223
44
|
<sp-action-group
|
|
224
45
|
selects="single"
|
|
225
46
|
compact
|
|
226
47
|
emphasized
|
|
227
48
|
@change=${this.handleChange}
|
|
228
49
|
>
|
|
229
|
-
${this.view
|
|
50
|
+
${this.view!=="error"?n:e`
|
|
230
51
|
<sp-action-button value="error" disabled>
|
|
231
52
|
Error
|
|
232
53
|
</sp-action-button>
|
|
233
54
|
`}
|
|
234
|
-
${
|
|
55
|
+
${this.canCompare?e`
|
|
235
56
|
<sp-action-button
|
|
236
57
|
value="scrubber"
|
|
237
|
-
?selected=${this.view
|
|
58
|
+
?selected=${this.view==="scrubber"}
|
|
238
59
|
>
|
|
239
60
|
Scrubber
|
|
240
61
|
</sp-action-button>
|
|
241
62
|
<sp-action-button
|
|
242
63
|
value="onion"
|
|
243
|
-
?selected=${this.view
|
|
64
|
+
?selected=${this.view==="onion"}
|
|
244
65
|
>
|
|
245
66
|
Onion skin
|
|
246
67
|
</sp-action-button>
|
|
247
68
|
<sp-action-button
|
|
248
69
|
value="sidebyside"
|
|
249
|
-
?selected=${this.view
|
|
70
|
+
?selected=${this.view==="sidebyside"}
|
|
250
71
|
>
|
|
251
72
|
Side by side
|
|
252
73
|
</sp-action-button>
|
|
253
|
-
|
|
254
|
-
${
|
|
74
|
+
`:n}
|
|
75
|
+
${this.hasDiff?e`
|
|
255
76
|
<sp-action-button
|
|
256
77
|
value="diff"
|
|
257
|
-
?selected=${this.view
|
|
78
|
+
?selected=${this.view==="diff"}
|
|
258
79
|
>
|
|
259
80
|
Diff
|
|
260
81
|
</sp-action-button>
|
|
261
|
-
|
|
262
|
-
${
|
|
82
|
+
`:n}
|
|
83
|
+
${this.hasActual?e`
|
|
263
84
|
<sp-action-button
|
|
264
85
|
value="actual"
|
|
265
|
-
?selected=${this.view
|
|
86
|
+
?selected=${this.view==="actual"}
|
|
266
87
|
>
|
|
267
88
|
Actual
|
|
268
89
|
</sp-action-button>
|
|
269
|
-
|
|
270
|
-
${
|
|
90
|
+
`:n}
|
|
91
|
+
${this.hasBaseline?e`
|
|
271
92
|
<sp-action-button
|
|
272
93
|
value="baseline"
|
|
273
|
-
?selected=${this.view
|
|
94
|
+
?selected=${this.view==="baseline"}
|
|
274
95
|
>
|
|
275
96
|
Baseline
|
|
276
97
|
</sp-action-button>
|
|
277
|
-
|
|
98
|
+
`:n}
|
|
278
99
|
</sp-action-group>
|
|
279
100
|
<div class="review ${this.view}">${this.renderView}</div>
|
|
280
101
|
<sp-action-group compact class="zoom-controls">
|
|
281
102
|
<sp-action-button
|
|
282
103
|
@click=${this.handleZoomOut}
|
|
283
|
-
?disabled=${this.zoom
|
|
104
|
+
?disabled=${this.zoom<=.5}
|
|
284
105
|
>
|
|
285
106
|
<sp-icon-zoom-out slot="icon"></sp-icon-zoom-out>
|
|
286
107
|
</sp-action-button>
|
|
@@ -289,23 +110,27 @@ export class VrtCompare extends ObserveSlotPresence(SpectrumElement, [
|
|
|
289
110
|
</sp-action-button>
|
|
290
111
|
<sp-action-button
|
|
291
112
|
@click=${this.handleZoomIn}
|
|
292
|
-
?disabled=${this.zoom
|
|
113
|
+
?disabled=${this.zoom>=2}
|
|
293
114
|
>
|
|
294
115
|
<sp-icon-zoom-in slot="icon"></sp-icon-zoom-in>
|
|
295
116
|
</sp-action-button>
|
|
296
117
|
</sp-action-group>
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
118
|
+
`:e`
|
|
119
|
+
<p class="spectrum-Body spectrum-Body--sizeXL">
|
|
120
|
+
Choose a test to review on the left...
|
|
121
|
+
</p>
|
|
122
|
+
<slot
|
|
123
|
+
name="actual"
|
|
124
|
+
@slotchange=${this.prepImages}
|
|
125
|
+
hidden
|
|
126
|
+
></slot>
|
|
127
|
+
<slot
|
|
128
|
+
name="baseline"
|
|
129
|
+
@slotchange=${this.prepImages}
|
|
130
|
+
hidden
|
|
131
|
+
></slot>
|
|
132
|
+
<slot name="diff" @slotchange=${this.prepImages} hidden></slot>
|
|
133
|
+
`}updated(i){if(i.has("zoom")){let t=Math.min(this.zoom,2);t=Math.min(t,.5),this.style.setProperty("--zoom-level",`${this.zoom}`)}}}VrtCompare.styles=[u`
|
|
309
134
|
:host {
|
|
310
135
|
display: grid;
|
|
311
136
|
max-width: 100%;
|
|
@@ -382,16 +207,5 @@ VrtCompare.styles = [
|
|
|
382
207
|
);
|
|
383
208
|
z-index: 1;
|
|
384
209
|
}
|
|
385
|
-
`,
|
|
386
|
-
bodyStyles
|
|
387
|
-
];
|
|
388
|
-
__decorateClass([
|
|
389
|
-
property()
|
|
390
|
-
], VrtCompare.prototype, "view", 2);
|
|
391
|
-
__decorateClass([
|
|
392
|
-
property({ type: Number })
|
|
393
|
-
], VrtCompare.prototype, "zoom", 2);
|
|
394
|
-
__decorateClass([
|
|
395
|
-
property({ type: Boolean, attribute: false })
|
|
396
|
-
], VrtCompare.prototype, "imagesLoaded", 2);
|
|
210
|
+
`,b],l([d()],VrtCompare.prototype,"view",2),l([d({type:Number})],VrtCompare.prototype,"zoom",2),l([d({type:Boolean,attribute:!1})],VrtCompare.prototype,"imagesLoaded",2);
|
|
397
211
|
//# sourceMappingURL=VrtCompare.js.map
|
package/src/VrtCompare.js.map
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["VrtCompare.ts"],
|
|
4
4
|
"sourcesContent": ["/*\nCopyright 2020 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\n\nimport {\n css,\n html,\n nothing,\n PropertyValues,\n SpectrumElement,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport { property } from '@spectrum-web-components/base/src/decorators.js';\nimport { ObserveSlotPresence } from '@spectrum-web-components/shared';\nimport { ActionGroup } from '@spectrum-web-components/action-group';\nimport bodyStyles from '@spectrum-web-components/styles/body.js';\nimport '@spectrum-web-components/action-button/sp-action-button.js';\nimport '@spectrum-web-components/action-group/sp-action-group.js';\nimport '@spectrum-web-components/split-view/sp-split-view.js';\nimport '@spectrum-web-components/icons-workflow/icons/sp-icon-alert.js';\nimport '@spectrum-web-components/icons-workflow/icons/sp-icon-zoom-in.js';\nimport '@spectrum-web-components/icons-workflow/icons/sp-icon-zoom-out.js';\nimport '@spectrum-web-components/icons-workflow/icons/sp-icon-refresh.js';\nimport '@spectrum-web-components/action-bar/sp-action-bar.js';\nimport '@spectrum-web-components/progress-circle/sp-progress-circle.js';\nimport '../onion-skinner.js';\n\nexport class VrtCompare extends ObserveSlotPresence(SpectrumElement, [\n '[slot=\"actual\"]',\n '[slot=\"baseline\"]',\n '[slot=\"diff\"]',\n]) {\n @property()\n public view = 'scrubber';\n\n @property({ type: Number })\n public zoom = 1;\n\n @property({ type: Boolean, attribute: false })\n public imagesLoaded = false;\n\n private get hasActual(): boolean {\n return this.getSlotContentPresence('[slot=\"actual\"]');\n }\n\n private get hasBaseline(): boolean {\n return this.getSlotContentPresence('[slot=\"baseline\"]');\n }\n\n private get hasDiff(): boolean {\n return this.getSlotContentPresence('[slot=\"diff\"]');\n }\n\n private get canCompare(): boolean {\n return this.hasActual && this.hasBaseline;\n }\n\n private handleChange(event: Event & { target: ActionGroup }) {\n const view = event.target.selected[0];\n if (view) {\n this.view = view;\n }\n }\n\n private handleZoomIn() {\n this.zoom += 0.1;\n }\n\n private handleZoomClear() {\n this.zoom = 1;\n }\n\n private handleZoomOut() {\n this.zoom -= 0.1;\n }\n\n protected get error() {\n return html`\n <sp-icon-alert class=\"icon\" size=\"xl\"></sp-icon-alert>\n <p class=\"spectrum-Body spectrum-Body--sizeXL\">\n Please be sure to supply some combination of actual, baseline,\n and diff screenshots for review.\n </p>\n `;\n }\n\n protected get actual() {\n return html`\n <div class=\"view actual\">\n <slot name=\"actual\"></slot>\n </div>\n `;\n }\n\n protected get baseline() {\n return html`\n <div class=\"view baseline\">\n <slot name=\"baseline\"></slot>\n </div>\n `;\n }\n\n protected get diff() {\n return html`\n <div class=\"view diff\">\n <slot name=\"diff\"></slot>\n </div>\n `;\n }\n\n protected get scrubber() {\n return html`\n <sp-split-view resizable primary-size=\"50%\">\n ${this.baseline} ${this.actual}\n </sp-split-view>\n `;\n }\n\n protected get sidebyside() {\n return html`\n ${this.baseline} ${this.actual}\n `;\n }\n\n protected get onion() {\n return html`\n <onion-skinner>\n <slot name=\"baseline\"></slot>\n <slot name=\"actual\"></slot>\n </onion-skinner>\n `;\n }\n\n protected get renderView() {\n switch (this.view) {\n case 'error':\n return this.error;\n case 'actual':\n return this.actual;\n case 'baseline':\n return this.baseline;\n case 'diff':\n return this.diff;\n case 'onion':\n return this.onion;\n case 'sidebyside':\n return this.sidebyside;\n case 'scrubber':\n default:\n return this.scrubber;\n }\n }\n\n private get viewFallback() {\n if (this.canCompare) {\n return 'scrubber';\n } else if (this.hasActual) {\n return 'actual';\n } else if (this.hasBaseline) {\n return 'baseline';\n } else if (this.hasDiff) {\n return 'diff';\n } else {\n return 'error';\n }\n }\n\n _loadingImages = false;\n\n async prepImages(event: Event) {\n const slot = event.target as HTMLSlotElement;\n if (this._loadingImages || !slot.assignedNodes().length) {\n return;\n }\n this._loadingImages = true;\n this.imagesLoaded = false;\n const images = [...this.querySelectorAll('img')];\n if (!images.length) {\n this.imagesLoaded = true;\n this._loadingImages = false;\n return;\n }\n const imageLoadPromises = images.map((img) => {\n if (img.naturalWidth) {\n this.style.setProperty(\n '--image-width',\n `${img.naturalWidth}px`\n );\n return Promise.resolve();\n }\n return new Promise((resolve) => {\n img.addEventListener('load', () => {\n this.style.setProperty(\n '--image-width',\n `${img.naturalWidth}px`\n );\n resolve(true);\n });\n });\n });\n await Promise.all(imageLoadPromises);\n this.imagesLoaded = true;\n this._loadingImages = false;\n }\n\n protected override shouldUpdate() {\n if (\n this.view === 'error' ||\n (this.view === 'actual' && !this.hasActual) ||\n (this.view === 'baseline' && !this.hasBaseline) ||\n (this.view === 'diff' && !this.hasDiff) ||\n ((this.view === 'onion' ||\n this.view === 'sidebyside' ||\n this.view === 'scrubber') &&\n !this.canCompare)\n ) {\n this.view = this.viewFallback;\n }\n return true;\n }\n\n protected override render(): TemplateResult {\n if (this._loadingImages) {\n return html`\n <sp-progress-circle indeterminate></sp-progress-circle>\n <slot\n name=\"actual\"\n @slotchange=${this.prepImages}\n hidden\n ></slot>\n <slot\n name=\"baseline\"\n @slotchange=${this.prepImages}\n hidden\n ></slot>\n <slot name=\"diff\" @slotchange=${this.prepImages} hidden></slot>\n `;\n }\n if (!this.imagesLoaded) {\n return html`\n <p class=\"spectrum-Body spectrum-Body--sizeXL\">\n Choose a test to review on the left...\n </p>\n <slot\n name=\"actual\"\n @slotchange=${this.prepImages}\n hidden\n ></slot>\n <slot\n name=\"baseline\"\n @slotchange=${this.prepImages}\n hidden\n ></slot>\n <slot name=\"diff\" @slotchange=${this.prepImages} hidden></slot>\n `;\n }\n return html`\n <sp-action-group\n selects=\"single\"\n compact\n emphasized\n @change=${this.handleChange}\n >\n ${this.view !== 'error'\n ? nothing\n : html`\n <sp-action-button value=\"error\" disabled>\n Error\n </sp-action-button>\n `}\n ${!this.canCompare\n ? nothing\n : html`\n <sp-action-button\n value=\"scrubber\"\n ?selected=${this.view === 'scrubber'}\n >\n Scrubber\n </sp-action-button>\n <sp-action-button\n value=\"onion\"\n ?selected=${this.view === 'onion'}\n >\n Onion skin\n </sp-action-button>\n <sp-action-button\n value=\"sidebyside\"\n ?selected=${this.view === 'sidebyside'}\n >\n Side by side\n </sp-action-button>\n `}\n ${!this.hasDiff\n ? nothing\n : html`\n <sp-action-button\n value=\"diff\"\n ?selected=${this.view === 'diff'}\n >\n Diff\n </sp-action-button>\n `}\n ${!this.hasActual\n ? nothing\n : html`\n <sp-action-button\n value=\"actual\"\n ?selected=${this.view === 'actual'}\n >\n Actual\n </sp-action-button>\n `}\n ${!this.hasBaseline\n ? nothing\n : html`\n <sp-action-button\n value=\"baseline\"\n ?selected=${this.view === 'baseline'}\n >\n Baseline\n </sp-action-button>\n `}\n </sp-action-group>\n <div class=\"review ${this.view}\">${this.renderView}</div>\n <sp-action-group compact class=\"zoom-controls\">\n <sp-action-button\n @click=${this.handleZoomOut}\n ?disabled=${this.zoom <= 0.5}\n >\n <sp-icon-zoom-out slot=\"icon\"></sp-icon-zoom-out>\n </sp-action-button>\n <sp-action-button @click=${this.handleZoomClear}>\n <sp-icon-refresh slot=\"icon\"></sp-icon-refresh>\n </sp-action-button>\n <sp-action-button\n @click=${this.handleZoomIn}\n ?disabled=${this.zoom >= 2}\n >\n <sp-icon-zoom-in slot=\"icon\"></sp-icon-zoom-in>\n </sp-action-button>\n </sp-action-group>\n `;\n }\n\n protected override updated(changes: PropertyValues) {\n if (changes.has('zoom')) {\n let zoom = Math.min(this.zoom, 2);\n zoom = Math.min(zoom, 0.5);\n this.style.setProperty('--zoom-level', `${this.zoom}`);\n }\n }\n\n static override styles = [\n css`\n :host {\n display: grid;\n max-width: 100%;\n overflow: auto;\n margin: 0 auto;\n position: relative;\n\n --image-display-width: calc(\n var(--zoom-level, 1) * var(--image-width, 500px)\n );\n }\n sp-progress-circle {\n margin: auto;\n place-self: center;\n }\n .review {\n margin: 100px auto 0;\n display: flex;\n width: var(--image-display-width);\n place-self: start;\n }\n .error {\n flex-direction: column;\n }\n ::slotted(img) {\n display: flex;\n }\n sp-action-group[selects] {\n margin-bottom: 1em;\n justify-content: center;\n position: fixed;\n top: calc(var(--spectrum-global-dimension-size-200) / 2);\n right: calc(var(--spectrum-global-dimension-size-200) / 2);\n }\n .sidebyside {\n display: flex;\n gap: 2px;\n }\n .sidebyside ::slotted(img) {\n width: 100%;\n }\n .view {\n overflow: hidden;\n }\n .review:is(.baseline, .actual, .diff) .view,\n .review:is(.baseline, .actual, .diff) ::slotted(img) {\n width: 100%;\n }\n sp-split-view {\n width: var(--image-display-width);\n }\n sp-split-view ::slotted(img) {\n width: var(--image-display-width);\n height: auto;\n flex-shrink: 0;\n }\n sp-split-view .actual ::slotted(img) {\n float: right;\n }\n p {\n text-align: center;\n margin: 0 3em;\n }\n .icon {\n margin: 0 auto 2em;\n display: flex;\n color: var(--spectrum-semantic-negative-color-background);\n }\n .zoom-controls {\n position: fixed;\n bottom: calc(var(--spectrum-global-dimension-size-200) / 2);\n left: calc(\n 240px + 48px + var(--spectrum-global-dimension-size-200) / 2\n );\n z-index: 1;\n }\n `,\n bodyStyles,\n ];\n}\n"],
|
|
5
|
-
"mappings": "
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/src/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export
|
|
1
|
+
export*from"./VrtCompare.js";
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/src/index.js.map
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["index.ts"],
|
|
4
4
|
"sourcesContent": ["/*\nCopyright 2020 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\n\nexport * from './VrtCompare.js';\n"],
|
|
5
|
-
"mappings": "AAYA
|
|
5
|
+
"mappings": "AAYA",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/vrt-compare.js
CHANGED
package/vrt-compare.js.map
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["vrt-compare.ts"],
|
|
4
4
|
"sourcesContent": ["/*\nCopyright 2020 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\n\nimport { VrtCompare } from './src/VrtCompare.js';\n\ncustomElements.define('vrt-compare', VrtCompare);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'vrt-compare': VrtCompare;\n }\n}\n"],
|
|
5
|
-
"mappings": "AAYA
|
|
5
|
+
"mappings": "AAYA,iDAEA,eAAe,OAAO,cAAe,CAAU",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|