@penn-libraries/web 1.1.0 → 1.1.1-dev.2
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/dist/cjs/{index-4ixBJUwu.js → index-DVr0pLZy.js} +62 -3
- package/dist/cjs/index-DVr0pLZy.js.map +1 -0
- package/dist/cjs/index.cjs.js +1 -1
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/pennlibs-autocomplete.pennlibs-fallback-img.pennlibs-footer.pennlibs-header.pennlibs-iiif-img.entry.cjs.js.map +1 -0
- package/dist/cjs/{pennlibs-autocomplete_3.cjs.entry.js → pennlibs-autocomplete_5.cjs.entry.js} +261 -2
- package/dist/cjs/pennlibs-banner.cjs.entry.js +1 -1
- package/dist/cjs/pennlibs-chat.cjs.entry.js +1 -1
- package/dist/cjs/pennlibs-feedback.cjs.entry.js +1 -1
- package/dist/cjs/pennlibs-hero.cjs.entry.js +1 -1
- package/dist/cjs/web.cjs.js +2 -2
- package/dist/collection/collection-manifest.json +2 -1
- package/dist/collection/components/pennlibs-iiif-img/pennlibs-iiif-img.css +44 -0
- package/dist/collection/components/pennlibs-iiif-img/pennlibs-iiif-img.js +432 -0
- package/dist/collection/components/pennlibs-iiif-img/pennlibs-iiif-img.js.map +1 -0
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.js +1 -0
- package/dist/components/index.js.map +1 -1
- package/dist/components/pennlibs-fallback-img.js +1 -32
- package/dist/components/pennlibs-fallback-img.js.map +1 -1
- package/dist/components/pennlibs-fallback-img2.js +37 -0
- package/dist/components/pennlibs-fallback-img2.js.map +1 -0
- package/dist/components/pennlibs-iiif-img.d.ts +11 -0
- package/dist/components/pennlibs-iiif-img.js +289 -0
- package/dist/components/pennlibs-iiif-img.js.map +1 -0
- package/dist/docs.json +239 -3
- package/dist/{web/p-Di48-Vtw.js → esm/index-Cst_89-s.js} +62 -3
- package/dist/esm/index-Cst_89-s.js.map +1 -0
- package/dist/esm/index.js +1 -1
- package/dist/esm/loader.js +3 -3
- package/dist/esm/pennlibs-autocomplete.pennlibs-fallback-img.pennlibs-footer.pennlibs-header.pennlibs-iiif-img.entry.js.map +1 -0
- package/dist/esm/{pennlibs-autocomplete_3.entry.js → pennlibs-autocomplete_5.entry.js} +260 -3
- package/dist/esm/pennlibs-banner.entry.js +1 -1
- package/dist/esm/pennlibs-chat.entry.js +1 -1
- package/dist/esm/pennlibs-feedback.entry.js +1 -1
- package/dist/esm/pennlibs-hero.entry.js +1 -1
- package/dist/esm/web.js +3 -3
- package/dist/types/components/pennlibs-iiif-img/pennlibs-iiif-img.d.ts +130 -0
- package/dist/types/components.d.ts +119 -0
- package/dist/web/index.esm.js +1 -1
- package/dist/web/{p-6503bb09.entry.js → p-4ffdbc93.entry.js} +1 -1
- package/dist/web/{p-56b9f10c.entry.js → p-621f166e.entry.js} +1 -1
- package/dist/web/{p-269363bf.entry.js → p-6e0c2de9.entry.js} +260 -3
- package/dist/web/{p-783e2a87.entry.js → p-848d9acc.entry.js} +1 -1
- package/dist/{esm/index-Di48-Vtw.js → web/p-Cst_89-s.js} +62 -3
- package/dist/web/p-Cst_89-s.js.map +1 -0
- package/dist/web/{p-7cbd16c0.entry.js → p-a9c79310.entry.js} +1 -1
- package/dist/web/pennlibs-autocomplete.pennlibs-fallback-img.pennlibs-footer.pennlibs-header.pennlibs-iiif-img.entry.esm.js.map +1 -0
- package/dist/web/web.esm.js +3 -3
- package/hydrate/index.js +323 -2
- package/hydrate/index.mjs +323 -2
- package/package.json +1 -1
- package/dist/cjs/index-4ixBJUwu.js.map +0 -1
- package/dist/cjs/pennlibs-autocomplete.pennlibs-footer.pennlibs-header.entry.cjs.js.map +0 -1
- package/dist/cjs/pennlibs-fallback-img.cjs.entry.js +0 -20
- package/dist/cjs/pennlibs-fallback-img.entry.cjs.js.map +0 -1
- package/dist/esm/index-Di48-Vtw.js.map +0 -1
- package/dist/esm/pennlibs-autocomplete.pennlibs-footer.pennlibs-header.entry.js.map +0 -1
- package/dist/esm/pennlibs-fallback-img.entry.js +0 -18
- package/dist/esm/pennlibs-fallback-img.entry.js.map +0 -1
- package/dist/web/p-09e4a02c.entry.js +0 -18
- package/dist/web/p-Di48-Vtw.js.map +0 -1
- package/dist/web/pennlibs-autocomplete.pennlibs-footer.pennlibs-header.entry.esm.js.map +0 -1
- package/dist/web/pennlibs-fallback-img.entry.esm.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { r as registerInstance, c as createEvent, h } from './p-
|
|
1
|
+
import { r as registerInstance, c as createEvent, h } from './p-Cst_89-s.js';
|
|
2
2
|
|
|
3
3
|
const pennlibsFeedbackCss = ":host{display:block;background:#eeeff4;padding:1.5em 1em;font-family:var(--pl-font-family);font-size:var(--pl-font-size);color:var(--pl-color-fg-default);line-height:1.4;box-sizing:border-box}@media print{:host{display:none}}.feedback-container{display:flex;align-items:center;flex-wrap:wrap;gap:0.5em;width:100%;justify-content:center}@media (max-width: 26em){.feedback-container{justify-content:center}}h2{display:inline-block;margin:0 0.5em 0 0;font-family:var(--pl-font-sans-serif);font-size:1em;font-weight:600}p{margin:0;padding:calc(0.5em + 1px) 0}strong{font-weight:600}a{color:var(--pl-color-fg-accent);text-decoration:underline;text-underline-offset:var(--pl-link-text-underline-offset);text-decoration-thickness:var(--pl-link-text-decoration-thickness)}button{all:unset;display:flex;align-items:center;gap:0.5em;padding:0.5em 1.5em;font-family:var(--pl-font-family);font-weight:500;line-height:1.4;color:var(--pl-color-fg-default);background:var(--pl-color-bg-default);border:solid 1px var(--pl-color-fg-subtle);border-radius:1em;box-sizing:border-box}button:hover{cursor:pointer}button:hover span{text-decoration:underline}*:focus{outline:0;box-shadow:0 0 0 2px var(--pl-color-bg-attention),\n 0 0 0 3px var(--pl-color-bg-emphasis)}p:focus{outline:none;box-shadow:0 0 0 2px var(--pl-color-bg-attention), 0 0 0 3px var(--pl-color-bg-emphasis)}@media (max-width: 26em){h2{display:block;width:100%;text-align:center}}.help-us{display:flex;flex-direction:column;gap:0.5em}.visually-hidden{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}.visually-hidden:focus,.visually-hidden:active{clip:auto;clip-path:none;height:auto;overflow:visible;position:static;white-space:normal;width:auto}";
|
|
4
4
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { r as registerInstance, c as createEvent, h, d as getElement, a as getAssetPath } from './p-
|
|
1
|
+
import { r as registerInstance, c as createEvent, h, d as getElement, a as getAssetPath } from './p-Cst_89-s.js';
|
|
2
2
|
|
|
3
3
|
const pennlibsAutocompleteCss = ":host {\n display: block;\n width: 100%;\n border-radius: 1.25rem;\n padding: 0;\n border-top: 0;\n position: relative;\n}\n\n[role=listbox] {\n position: absolute;\n margin-top: var(--pl-space-xs);\n background: var(--pl-color-bg-default);\n border-radius: 1.25rem;\n box-shadow: rgba(140, 149, 159, 0.3) 0px 8px 24px 0px;\n width: 100%;\n overflow: hidden;\n z-index: 1;\n\n display: flex;\n flex-direction: column;\n}\n\np {\n margin: 0;\n font-size: var(--pl-font-size-s);\n color: var(--pl-color-fg-subtle);\n padding: var(--pl-space-xs) calc(var(--pl-space-m) + var(--pl-space-2xs));\n font-size: var(--pl-font-size-s);\n order: 2;\n font-weight: 500;\n background: var(--pl-color-bg-subtle);\n border-radius: 0 0 1.25rem 1.25rem;\n\n display: flex;\n gap: var(--pl-space-s) var(--pl-space-l);\n flex-wrap: wrap;\n}\n\nol {\n list-style: none;\n margin: 0;\n padding: var(--pl-space-xs) 0;\n order: 1;\n}\n\n[role=option] {\n color: var(--pl-color-fg-default);\n padding: var(--pl-space-s) calc(var(--pl-space-m) + var(--pl-space-2xs));\n text-decoration: none;\n font-weight: 700; \n\n &:hover {\n cursor: pointer;\n }\n\n &:hover,\n &:focus {\n text-decoration-thickness: 2px;\n text-underline-offset: 2px;\n text-decoration: underline;\n }\n}\n\n[aria-selected=true] {\n text-decoration-thickness: 2px;\n text-underline-offset: 2px;\n text-decoration: underline;\n}\n\nmark,\nb {\n background: none;\n font-weight: 400;\n}\n\n.suggestion--border {\n border-bottom: solid 1px rgb(from var(--pl-color-fg-default) r g b / 0.2);\n padding-bottom: calc(var(--pl-space-2xs) + var(--pl-space-s));\n margin-bottom: var(--pl-space-2xs);\n}";
|
|
4
4
|
|
|
@@ -275,6 +275,20 @@ const Autocomplete = class {
|
|
|
275
275
|
};
|
|
276
276
|
Autocomplete.style = pennlibsAutocompleteCss;
|
|
277
277
|
|
|
278
|
+
const pennlibsFallbackImgCss = ":host{font-family:var(--pl-font-family);font-size:var(--pl-font-size);display:flex;align-items:center;justify-content:center;padding:1rem;background:var(--pl-color-bg-subtle);aspect-ratio:3/2}.no-image__img{width:100%;max-width:150px;filter:grayscale(1) opacity(0.3)}";
|
|
279
|
+
|
|
280
|
+
const NoImage = class {
|
|
281
|
+
constructor(hostRef) {
|
|
282
|
+
registerInstance(this, hostRef);
|
|
283
|
+
}
|
|
284
|
+
render() {
|
|
285
|
+
const shieldImg = getAssetPath('./assets/simplified-shield.webp');
|
|
286
|
+
return (h("img", { key: 'ba6cc227e90aac2e22b9997ad5c794fd4fd6d5ef', src: shieldImg, alt: "", class: "no-image__img" }));
|
|
287
|
+
}
|
|
288
|
+
static get assetsDirs() { return ["assets"]; }
|
|
289
|
+
};
|
|
290
|
+
NoImage.style = pennlibsFallbackImgCss;
|
|
291
|
+
|
|
278
292
|
const pennlibsFooterCss = ":host {\n font-family: var(--pl-font-family);\n font-size: var(--pl-font-size);\n --padding-bottom: 5.75rem;\n}\n\n@media print {\n :host {\n display: none;\n }\n}\n\n*, *::before, *::after {\n box-sizing: border-box;\n}\n\n.website-footer-wrapper {\n background: var(--pl-color-penn-blue);\n padding-bottom: var(--padding-bottom);\n}\n\n.viewport-margins {\n max-width: var(--pl-viewport-margins-max-width);\n margin: 0 auto;\n padding: 0 var(--pl-viewport-margins-gutter, 1em);\n}\n\n.website-footer {\n background-size: cover;\n color: var(--pl-color-fg-subtle-on-emphasis);\n}\n\n.website-footer a {\n color: var(--pl-color-fg-subtle-on-emphasis);\n}\n\n.website-footer__content {\n padding: 4em 0;\n}\n\n.website-footer__links-container {\n gap: 4em 2em;\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(12em, 1fr));\n}\n\n.website-footer__heading {\n font-size: 0.8em;\n text-transform: uppercase;\n letter-spacing: 0.075em;\n margin-bottom: 1em;\n opacity: 0.75;\n}\n\n.website-footer__links {\n margin: 0;\n padding: 0;\n list-style: none;\n display: flex;\n flex-direction: column;\n gap: 0.75em;\n}\n\n.website-footer__links a {\n text-decoration: none;\n}\n\n.website-footer__links a:hover {\n text-decoration: underline;\n text-underline-offset: var(--pl-link-text-underline-offset);\n}\n\n.website-footer__footer {\n padding: 1em 0;\n background: rgba(1, 31, 91, 0.65);\n}\n\n.website-footer__links--footer {\n display: flex;\n flex-wrap: wrap;\n gap: 0;\n flex-direction: row;\n margin-left: -0.5em;\n\n @media (max-width: 1080px) {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(16em, 1fr));\n }\n}\n\n.website-footer__links--footer a {\n display: inline-block;\n padding: 0.5em 0.75em;\n font-size: 0.875em;\n opacity: 0.875;\n font-weight: 500;\n}\n\n.website-footer__links--footer a:hover {\n text-decoration: underline;\n text-underline-offset: var(--pl-link-text-underline-offset);\n}";
|
|
279
293
|
|
|
280
294
|
const Footer = class {
|
|
@@ -374,5 +388,248 @@ const Header = class {
|
|
|
374
388
|
};
|
|
375
389
|
Header.style = pennlibsHeaderCss;
|
|
376
390
|
|
|
377
|
-
|
|
378
|
-
|
|
391
|
+
const pennlibsIiifImgCss = ":host{display:block;width:100%;max-width:100%;align-self:flex-start;aspect-ratio:var(--aspect-ratio, auto)}picture{display:block;line-height:0}.iiif-img{display:block;width:100%;max-width:100%;height:auto;opacity:0;filter:blur(5px);transition:opacity 0.15s ease-in, filter 0.15s ease-in}.iiif-img.loaded{opacity:1;filter:blur(0)}.fallback-container{display:block;width:100%;height:100%}.fallback-container pennlibs-fallback-img{width:100%;height:100%}pennlibs-fallback-img{display:block;width:100%;height:100%}";
|
|
392
|
+
|
|
393
|
+
const PIXEL_DENSITIES = [1, 1.5, 2];
|
|
394
|
+
const IIIFImg = class {
|
|
395
|
+
constructor(hostRef) {
|
|
396
|
+
registerInstance(this, hostRef);
|
|
397
|
+
/**
|
|
398
|
+
* The IIIF [region](https://iiif.io/api/image/3.0/#41-region) of the image to display.
|
|
399
|
+
* Defines the rectangular portion of the underlying image to return.
|
|
400
|
+
*
|
|
401
|
+
* `full`: The full image is returned, without any cropping.
|
|
402
|
+
*
|
|
403
|
+
* `square`: A square area where width and height equal the shorter dimension.
|
|
404
|
+
*
|
|
405
|
+
* `width:height`: Any aspect ratio format (e.g., `16:9`, `4:3`, `3:2`, `21:9`) applies
|
|
406
|
+
* a centered crop based on the source image dimensions and sets the CSS aspect-ratio
|
|
407
|
+
* property for layout reservation.
|
|
408
|
+
*
|
|
409
|
+
* `x,y,w,h`: Absolute pixel coordinates (x, y position; w, h dimensions).
|
|
410
|
+
*
|
|
411
|
+
* `pct:x,y,w,h`: Percentage-based coordinates of full image dimensions.
|
|
412
|
+
*
|
|
413
|
+
* @default 'full'
|
|
414
|
+
*/
|
|
415
|
+
this.region = 'full';
|
|
416
|
+
/**
|
|
417
|
+
* The IIIF [rotation](https://iiif.io/api/image/3.0/#44-rotation) to apply to the image.
|
|
418
|
+
* Specifies mirroring and clockwise rotation in degrees (0-360).
|
|
419
|
+
*
|
|
420
|
+
* `n`: Rotation in degrees only.
|
|
421
|
+
*
|
|
422
|
+
* `!n`: Mirror the image vertically, then rotate by n degrees.
|
|
423
|
+
*
|
|
424
|
+
* @default '0'
|
|
425
|
+
*/
|
|
426
|
+
this.rotation = '0';
|
|
427
|
+
/**
|
|
428
|
+
* The IIIF [quality](https://iiif.io/api/image/3.0/#quality) of the image.
|
|
429
|
+
* Controls the color delivery mode.
|
|
430
|
+
*
|
|
431
|
+
* `default`: The server's default quality.
|
|
432
|
+
*
|
|
433
|
+
* `color`: Full color information.
|
|
434
|
+
*
|
|
435
|
+
* `gray`: Grayscale rendering.
|
|
436
|
+
*
|
|
437
|
+
* `bitonal`: Black and white only.
|
|
438
|
+
*
|
|
439
|
+
* @default 'default'
|
|
440
|
+
*/
|
|
441
|
+
this.quality = 'default';
|
|
442
|
+
/**
|
|
443
|
+
* Native browser lazy loading behavior. Use "lazy" to defer loading until the image is near the viewport,
|
|
444
|
+
* or "eager" to load immediately.
|
|
445
|
+
* @default 'lazy'
|
|
446
|
+
*/
|
|
447
|
+
this.loading = 'lazy';
|
|
448
|
+
/**
|
|
449
|
+
* Whether to display a fallback placeholder image when the IIIF image fails to load.
|
|
450
|
+
* @default true
|
|
451
|
+
*/
|
|
452
|
+
this.showFallback = true;
|
|
453
|
+
this.isLoaded = false;
|
|
454
|
+
this.hasError = false;
|
|
455
|
+
this.baseUrl = 'https://iiif-images.library.upenn.edu/iiif/3';
|
|
456
|
+
this.handleLoad = () => {
|
|
457
|
+
this.isLoaded = true;
|
|
458
|
+
};
|
|
459
|
+
this.handleError = () => {
|
|
460
|
+
this.hasError = true;
|
|
461
|
+
};
|
|
462
|
+
}
|
|
463
|
+
/**
|
|
464
|
+
* Fetch IIIF image info to get actual dimensions.
|
|
465
|
+
*/
|
|
466
|
+
async fetchImageInfo() {
|
|
467
|
+
try {
|
|
468
|
+
const currentUuid = this.uuid; // Capture current UUID
|
|
469
|
+
const infoUrl = `${this.baseUrl}/${currentUuid}/info.json`;
|
|
470
|
+
const response = await fetch(infoUrl);
|
|
471
|
+
if (!response.ok) {
|
|
472
|
+
console.error(`Failed to fetch IIIF info.json for ${currentUuid}`);
|
|
473
|
+
return;
|
|
474
|
+
}
|
|
475
|
+
const info = await response.json();
|
|
476
|
+
// Only update dimensions if UUID hasn't changed during fetch
|
|
477
|
+
// (protects against race conditions if component updates)
|
|
478
|
+
if (this.uuid === currentUuid) {
|
|
479
|
+
this.imageDimensions = {
|
|
480
|
+
width: info.width,
|
|
481
|
+
height: info.height,
|
|
482
|
+
};
|
|
483
|
+
this.fetchedUuid = currentUuid;
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
catch (error) {
|
|
487
|
+
console.error(`Error fetching IIIF image info for ${this.uuid}:`, error);
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
/**
|
|
491
|
+
* Check if a region value matches aspect ratio format (e.g., "16:9", "4:3", "3:2").
|
|
492
|
+
*/
|
|
493
|
+
isAspectRatio(value) {
|
|
494
|
+
return /^\d+:\d+$/.test(value);
|
|
495
|
+
}
|
|
496
|
+
/**
|
|
497
|
+
* Set CSS custom property for aspect ratio on the host element.
|
|
498
|
+
*/
|
|
499
|
+
setAspectRatioCss(aspectRatio) {
|
|
500
|
+
const [widthRatio, heightRatio] = aspectRatio.split(':');
|
|
501
|
+
this.hostElement.style.setProperty('--aspect-ratio', `${widthRatio} / ${heightRatio}`);
|
|
502
|
+
}
|
|
503
|
+
/**
|
|
504
|
+
* Clear CSS custom property for aspect ratio from the host element.
|
|
505
|
+
*/
|
|
506
|
+
clearAspectRatioCss() {
|
|
507
|
+
this.hostElement.style.removeProperty('--aspect-ratio');
|
|
508
|
+
}
|
|
509
|
+
/**
|
|
510
|
+
* Format a number for IIIF percentage values (remove trailing zeros).
|
|
511
|
+
* IIIF spec requires no trailing zeros per section 4.7.
|
|
512
|
+
*/
|
|
513
|
+
formatPercent(value) {
|
|
514
|
+
return value.toFixed(2).replace(/\.?0+$/, '');
|
|
515
|
+
}
|
|
516
|
+
/**
|
|
517
|
+
* Calculate a centered crop region for a given aspect ratio.
|
|
518
|
+
* Requires actual image dimensions to calculate correctly.
|
|
519
|
+
* @param aspectRatio - The target aspect ratio (e.g., "3:2" or "2:3")
|
|
520
|
+
* @returns A IIIF percentage-based region string (e.g., "pct:0,16.67,100,66.67")
|
|
521
|
+
*/
|
|
522
|
+
calculateCenteredCrop(aspectRatio) {
|
|
523
|
+
if (!this.imageDimensions) {
|
|
524
|
+
throw new Error('Image dimensions required for aspect ratio calculation');
|
|
525
|
+
}
|
|
526
|
+
const [widthRatio, heightRatio] = aspectRatio.split(':').map(Number);
|
|
527
|
+
const targetRatio = widthRatio / heightRatio;
|
|
528
|
+
const sourceRatio = this.imageDimensions.width / this.imageDimensions.height;
|
|
529
|
+
// Determine if we need to crop width or height
|
|
530
|
+
if (sourceRatio > targetRatio) {
|
|
531
|
+
// Source is wider than target - crop left and right
|
|
532
|
+
const widthPercent = (targetRatio / sourceRatio) * 100;
|
|
533
|
+
const xOffset = (100 - widthPercent) / 2;
|
|
534
|
+
return `pct:${this.formatPercent(xOffset)},0,${this.formatPercent(widthPercent)},100`;
|
|
535
|
+
}
|
|
536
|
+
else {
|
|
537
|
+
// Source is taller than target - crop top and bottom
|
|
538
|
+
const heightPercent = (sourceRatio / targetRatio) * 100;
|
|
539
|
+
const yOffset = (100 - heightPercent) / 2;
|
|
540
|
+
return `pct:0,${this.formatPercent(yOffset)},100,${this.formatPercent(heightPercent)}`;
|
|
541
|
+
}
|
|
542
|
+
}
|
|
543
|
+
/**
|
|
544
|
+
* Get the region parameter for the IIIF URL.
|
|
545
|
+
*/
|
|
546
|
+
getRegionParam() {
|
|
547
|
+
// Handle custom aspect ratios
|
|
548
|
+
let regionParam = this.region || 'full';
|
|
549
|
+
if (this.isAspectRatio(regionParam)) {
|
|
550
|
+
// Only apply crop if we have dimensions for the current UUID
|
|
551
|
+
if (this.imageDimensions && this.fetchedUuid === this.uuid) {
|
|
552
|
+
regionParam = this.calculateCenteredCrop(regionParam);
|
|
553
|
+
}
|
|
554
|
+
else {
|
|
555
|
+
// Use full image until dimensions are loaded
|
|
556
|
+
regionParam = 'full';
|
|
557
|
+
}
|
|
558
|
+
}
|
|
559
|
+
return regionParam;
|
|
560
|
+
}
|
|
561
|
+
buildIIIFUrl(width, format = 'jpg') {
|
|
562
|
+
const sizeParam = width ? `${width},` : 'max';
|
|
563
|
+
const regionParam = this.getRegionParam();
|
|
564
|
+
return `${this.baseUrl}/${this.uuid}/${regionParam}/${sizeParam}/${this.rotation}/${this.quality}.${format}`;
|
|
565
|
+
}
|
|
566
|
+
generateSrcset(baseWidth, format) {
|
|
567
|
+
return PIXEL_DENSITIES.map(density => {
|
|
568
|
+
const width = Math.round(baseWidth * density);
|
|
569
|
+
const url = this.buildIIIFUrl(width, format);
|
|
570
|
+
return `${url} ${density}x`;
|
|
571
|
+
}).join(', ');
|
|
572
|
+
}
|
|
573
|
+
handleRegionChange(newValue, oldValue) {
|
|
574
|
+
// Only process if region actually changed
|
|
575
|
+
if (newValue === oldValue) {
|
|
576
|
+
return;
|
|
577
|
+
}
|
|
578
|
+
// If new region is an aspect ratio, set CSS and fetch info
|
|
579
|
+
if (newValue && this.isAspectRatio(newValue)) {
|
|
580
|
+
this.setAspectRatioCss(newValue);
|
|
581
|
+
this.fetchImageInfo();
|
|
582
|
+
}
|
|
583
|
+
else {
|
|
584
|
+
// Clear aspect ratio CSS if no longer using aspect ratio format
|
|
585
|
+
this.clearAspectRatioCss();
|
|
586
|
+
}
|
|
587
|
+
}
|
|
588
|
+
componentDidLoad() {
|
|
589
|
+
// Set CSS aspect ratio and fetch image info if using aspect ratio format
|
|
590
|
+
if (this.region && this.isAspectRatio(this.region)) {
|
|
591
|
+
this.setAspectRatioCss(this.region);
|
|
592
|
+
this.fetchImageInfo();
|
|
593
|
+
}
|
|
594
|
+
if ('ResizeObserver' in window) {
|
|
595
|
+
this.resizeObserver = new ResizeObserver(entries => {
|
|
596
|
+
for (const entry of entries) {
|
|
597
|
+
this.observedWidth = Math.round(entry.contentRect.width);
|
|
598
|
+
if (this.resizeObserver) {
|
|
599
|
+
this.resizeObserver.disconnect();
|
|
600
|
+
this.resizeObserver = undefined;
|
|
601
|
+
}
|
|
602
|
+
}
|
|
603
|
+
});
|
|
604
|
+
this.resizeObserver.observe(this.hostElement);
|
|
605
|
+
}
|
|
606
|
+
}
|
|
607
|
+
disconnectedCallback() {
|
|
608
|
+
if (this.resizeObserver) {
|
|
609
|
+
this.resizeObserver.disconnect();
|
|
610
|
+
this.resizeObserver = undefined;
|
|
611
|
+
}
|
|
612
|
+
}
|
|
613
|
+
render() {
|
|
614
|
+
// Show placeholder until we've measured the component width
|
|
615
|
+
if (!this.observedWidth) {
|
|
616
|
+
return h("pennlibs-fallback-img", null);
|
|
617
|
+
}
|
|
618
|
+
if (this.hasError && this.showFallback) {
|
|
619
|
+
return (h("div", { class: "fallback-container" }, h("pennlibs-fallback-img", null)));
|
|
620
|
+
}
|
|
621
|
+
const imgClasses = {
|
|
622
|
+
'iiif-img': true,
|
|
623
|
+
'loaded': this.isLoaded
|
|
624
|
+
};
|
|
625
|
+
return (h("picture", null, h("source", { type: "image/webp", srcSet: this.generateSrcset(this.observedWidth, 'webp') }), h("img", { class: imgClasses, src: this.buildIIIFUrl(this.observedWidth, 'jpg'), srcSet: this.generateSrcset(this.observedWidth, 'jpg'), alt: this.alt, loading: this.loading, onLoad: this.handleLoad, onError: this.handleError })));
|
|
626
|
+
}
|
|
627
|
+
get hostElement() { return getElement(this); }
|
|
628
|
+
static get watchers() { return {
|
|
629
|
+
"region": ["handleRegionChange"]
|
|
630
|
+
}; }
|
|
631
|
+
};
|
|
632
|
+
IIIFImg.style = pennlibsIiifImgCss;
|
|
633
|
+
|
|
634
|
+
export { Autocomplete as pennlibs_autocomplete, NoImage as pennlibs_fallback_img, Footer as pennlibs_footer, Header as pennlibs_header, IIIFImg as pennlibs_iiif_img };
|
|
635
|
+
//# sourceMappingURL=pennlibs-autocomplete.pennlibs-fallback-img.pennlibs-footer.pennlibs-header.pennlibs-iiif-img.entry.esm.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { r as registerInstance, h } from './p-
|
|
1
|
+
import { r as registerInstance, h } from './p-Cst_89-s.js';
|
|
2
2
|
|
|
3
3
|
const pennlibsChatCss = ":host {\n font-family: var(--pl-font-family);\n font-size: var(--pl-font-size);\n line-height: normal;\n}\n\n@media print {\n :host {\n display: none;\n }\n}\n\na {\n display: flex;\n align-items: center;\n background: linear-gradient(45deg, #faa755, #fcca99);\n border-radius: 1em;\n position: fixed;\n bottom: 0.75em;\n right: 0.75em;\n box-shadow: rgba(0,0,0,0.3) 0px 2px 16px 0px;\n color: var(--pl-color-penn-blue);\n text-decoration: none;\n font-weight: 500;\n padding: 0.15em;\n font-size: 1em;\n\n @media (min-width: 820px) {\n bottom: 1.5em;\n right: 1.5em;\n width: auto;\n padding: 0.15em 0.75em;\n padding-left: 0.5em;\n }\n}\n\na:hover {\n text-decoration: underline;\n text-underline-offset: var(--pl-link-text-underline-offset);\n text-decoration-thickness: var(--pl-link-hover-text-decoration-thickness);\n}\n\na:hover,\na:focus {\n outline: none;\n box-shadow: 0 0 0 2px var(--pl-color-bg-attention),0 0 0 4px var(--pl-color-penn-blue), rgba(0,0,0,0.3) 0px 2px 16px 0px;;\n}\n\nsvg {\n width: 2.5em;\n height: 2.5em;\n}\n\nspan {\n display: none;\n font-size: 1.1em;\n\n @media (min-width: 820px) {\n display: inline;\n }\n}";
|
|
4
4
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const NAMESPACE = 'web';
|
|
2
|
-
const BUILD = /* web */ { hydratedSelectorName: "hydrated", lazyLoad: true, propChangeCallback:
|
|
2
|
+
const BUILD = /* web */ { hydratedSelectorName: "hydrated", lazyLoad: true, propChangeCallback: true, updatable: true};
|
|
3
3
|
|
|
4
4
|
const globalScripts = () => {};
|
|
5
5
|
const globalStyles = "@import url(\"https://use.typekit.net/gbh8cmg.css\");\n\n:root {\n --pl-color-penn-red: #990000;\n --pl-color-penn-blue: #011F5B;\n --pl-color-gray-dark: #2D3545;\n --pl-color-gray: #595F6A;\n --pl-color-gray-light: #F5F5F6;\n --pl-color-gray-blue-light: #EEEEF4;\n --pl-color-white: #FFFFFF;\n --pl-color-blue: #0E5696;\n --pl-color-blue-light: #D4E4F2;\n --pl-color-green: #267434;\n --pl-color-green-light: #F1F7E1;\n --pl-color-orange: #BD4718;\n --pl-color-orange-light: #FEEDDD;\n --pl-color-purple: #80317F;\n --pl-color-purple-light: #F2DFED;\n --pl-color-bg-gradient-1: linear-gradient(45deg, rgba(200, 219, 232, 0.8), rgba(239, 210, 215, 0.8));\n --pl-color-bg-gradient-2: linear-gradient(45deg, #dbe9f5, #feefdf);\n --pl-font-size: 16px;\n --pl-font-sans-serif: proxima-nova, system-ui, sans-serif;\n --pl-font-serif: cormorant-garamond, serif;\n --pl-link-text-underline-offset: 0.2em;\n --pl-link-text-decoration-thickness: 1px;\n --pl-link-hover-text-decoration-thickness: 2px;\n --pl-viewport-margins-max-width: 1440px;\n --pl-viewport-margins-gutter: 1em;\n --pl-color-fg-default: var(--pl-color-gray-dark);\n --pl-color-fg-subtle: var(--pl-color-gray);\n --pl-color-fg-subtle-on-emphasis: var(--pl-color-gray-light);\n --pl-color-fg-on-emphasis: var(--pl-color-white);\n --pl-color-fg-accent: var(--pl-color-blue);\n --pl-color-fg-success: var(--pl-color-green);\n --pl-color-fg-attention: var(--pl-color-orange);\n --pl-color-fg-info: var(--pl-color-purple);\n --pl-color-bg-default: var(--pl-color-white);\n --pl-color-bg-subtle: var(--pl-color-gray-light);\n --pl-color-bg-subtle-brand: var(--pl-color-gray-blue-light);\n --pl-color-bg-emphasis: var(--pl-color-gray-dark);\n --pl-color-bg-accent: var(--pl-color-blue-light);\n --pl-color-bg-success: var(--pl-color-green-light);\n --pl-color-bg-attention: var(--pl-color-orange-light);\n --pl-color-bg-info: var(--pl-color-purple-light);\n --pl-color-bg-accent-emphasis: var(--pl-color-blue);\n --pl-color-bg-success-emphasis: var(--pl-color-green);\n --pl-color-bg-attention-emphasis: var(--pl-color-orange);\n --pl-color-bg-info-emphasis: var(--pl-color-purple);\n --pl-font-family: var(--pl-font-sans-serif);\n --pl-link-text-underline-offset: 0.2em;\n --pl-link-text-decoration-thickness: 1px;\n --pl-link-hover-text-decoration-thickness: 2px;\n\n /* Font size tokens */\n --pl-font-size-5xl: 3rem;\n --pl-font-size-4xl: 2.75rem;\n --pl-font-size-3xl: 2.25rem;\n --pl-font-size-2xl: 1.5rem;\n --pl-font-size-xl: 1.25rem;\n --pl-font-size-l: 1.125rem;\n --pl-font-size-m: 1rem;\n --pl-font-size-s: 0.875rem;\n --pl-font-size-xs: 0.75rem;\n \n /* Spacing tokens */\n --pl-space-3xs: 0.125rem;\n --pl-space-2xs: 0.25rem;\n --pl-space-xs: 0.5rem;\n --pl-space-s: 0.75rem;\n --pl-space-m: 1rem;\n --pl-space-l: 1.5rem;\n --pl-space-xl: 2rem;\n --pl-space-2xl: 3rem;\n --pl-space-3xl: 4rem;\n\n /* Border radius tokens */\n --pl-border-radius-subtle: 0.25rem;\n --pl-border-radius: 1rem;\n\n /* Focus box shadow tokens */\n --pl-focus-box-shadow: 0 0 0 2px var(--pl-color-bg-accent), 0 0 0 4px var(--pl-color-fg-default);\n}\n\n@media (min-width: 768px) {\n :root {\n --pl-viewport-margins-gutter: 3em;\n }\n}\n\n@media print {\n body {\n zoom: 80%;\n }\n}\n\n.pl-viewport-margins {\n max-width: var(--pl-viewport-margins-max-width);\n margin: 0 auto;\n padding: 0 var(--pl-viewport-margins-gutter, 1rem);\n width: 100%;\n}\n\n/*\n Prevents a flash of unstyled content (FOUC) while custom elements are loading.\n Ensures that elements are only visible once they're fully defined and ready to be displayed.\n*/\n:not(:defined) {\n visibility: hidden;\n}\n\n/*\n Reset\n*/\n\n:where(.pl-reset) {\n font-weight: 400;\n line-height: 1.4;\n color: var(--pl-color-fg-default);\n accent-color: var(--pl-color-fg-accent);\n\n /* Use a more-intuitive box-sizing model */\n & :is(*, *::before, *::after) {\n box-sizing: border-box;\n margin: 0;\n }\n\n /* Improve media defaults */\n & :is(img, picture, video, canvas, svg) {\n display: block;\n max-width: 100%;\n }\n\n /* Inherit fonts for form controls */\n & :is(input, button, textarea, select) {\n font: var(--pl-font-family);\n }\n\n /* Avoid text overflows */\n & :is(p, h1, h2, h3, h4, h5, h6) {\n overflow-wrap: break-word;\n }\n\n /* Improve line wrapping */\n & p {\n text-wrap: pretty;\n }\n & :is(h1, h2, h3, h4, h5, h6) {\n text-wrap: balance;\n }\n\n /* Link styles */\n & a {\n color: var(--pl-color-fg-accent);\n text-decoration: underline;\n text-underline-offset: var(--pl-link-text-underline-offset);\n text-decoration-thickness: var(--pl-link-text-decoration-thickness);\n font-weight: 500;\n\n &:hover {\n text-decoration-thickness: 3px;\n }\n }\n}\n\n/*\n Typeset\n*/\n\n:where(.pl-typeset) {\n font-family: var(--pl-font-family);\n \n & :is(p, .pl-p) {\n font-family: var(--pl-font-family);\n }\n\n & :is(h1, .pl-h1, h2, .pl-h2) {\n font-family: var(--pl-font-serif);\n }\n\n & :is(h1, .pl-h1, h2, .pl-h2, h3, .pl-h3, h4, .pl-h4, h5, .pl-h5, h6, .pl-h6) {\n font-weight: 600;\n }\n\n & *+:is(h2,h3,h4,h5,h6) {\n margin-block-start: var(--pl-space-xl);\n }\n\n & :is(h1, .pl-h1, h2, .pl-h2) {\n font-weight: 600;\n line-height: 1.125;\n font-family: var(--pl-font-serif);\n color: var(--pl-color-penn-blue);\n position: relative;\n\n &::after {\n bottom: -0.25rem;\n content: \"\";\n display: block;\n height: 4px;\n opacity: 1;\n position: absolute;\n }\n }\n\n & :is(h1, .pl-h1) {\n font-size: var(--pl-font-size-5xl);\n margin-bottom: 0.5em;\n margin-top: 0;\n\n &::after {\n background: var(--pl-color-penn-red);\n width: 2.25rem;\n }\n }\n\n & :is(h2, .pl-h2) {\n font-size: var(--pl-font-size-3xl);\n margin-bottom: 0.5em;\n\n &::after {\n background: #d6d6dc;\n width: 2.25rem;\n }\n }\n\n & :is(h3, .pl-h3) {\n font-size: var(--pl-font-size-xl);\n font-family: var(--pl-font-sans-serif);\n color: var(--pl-color-fg-default);\n margin-bottom: var(--pl-space-m);\n\n &:after {\n content: none;\n }\n }\n\n & :is(h4, .pl-h4) {\n font-size: var(--pl-font-size-m);\n margin-bottom: var(--pl-space-s);\n\n &:after {\n content: none;\n }\n }\n}\n\n/* \n Display\n*/\n.pl-block { display: block; }\n.pl-inline { display: inline; }\n.pl-inline-block { display: inline-block; }\n.pl-flex { display: flex; }\n.pl-inline-flex { display: inline-flex; }\n.pl-grid { display: grid; }\n.pl-inline-grid { display: inline-grid; }\n.pl-none { display: none; }\n\n/* \n Flex direction utilities\n*/\n.pl-flex-row { flex-direction: row; }\n.pl-flex-col { flex-direction: column; }\n\n/* \n Spacing\n*/\n\n/* Margin utilities */\n.pl-margin-0 { margin: 0; }\n.pl-margin-2xs { margin: var(--pl-space-2xs); }\n.pl-margin-xs { margin: var(--pl-space-xs); }\n.pl-margin-s { margin: var(--pl-space-s); }\n.pl-margin-m { margin: var(--pl-space-m); }\n.pl-margin-l { margin: var(--pl-space-l); }\n.pl-margin-xl { margin: var(--pl-space-xl); }\n.pl-margin-2xl { margin: var(--pl-space-2xl); }\n.pl-margin-3xl { margin: var(--pl-space-3xl); }\n\n/* Margin top */\n.pl-margin-t-0 { margin-top: 0; }\n.pl-margin-t-2xs { margin-top: var(--pl-space-2xs); }\n.pl-margin-t-xs { margin-top: var(--pl-space-xs); }\n.pl-margin-t-s { margin-top: var(--pl-space-s); }\n.pl-margin-t-m { margin-top: var(--pl-space-m); }\n.pl-margin-t-l { margin-top: var(--pl-space-l); }\n.pl-margin-t-xl { margin-top: var(--pl-space-xl); }\n.pl-margin-t-2xl { margin-top: var(--pl-space-2xl); }\n.pl-margin-t-3xl { margin-top: var(--pl-space-3xl); }\n\n/* Margin bottom */\n.pl-margin-b-0 { margin-bottom: 0; }\n.pl-margin-b-2xs { margin-bottom: var(--pl-space-2xs); }\n.pl-margin-b-xs { margin-bottom: var(--pl-space-xs); }\n.pl-margin-b-s { margin-bottom: var(--pl-space-s); }\n.pl-margin-b-m { margin-bottom: var(--pl-space-m); }\n.pl-margin-b-l { margin-bottom: var(--pl-space-l); }\n.pl-margin-b-xl { margin-bottom: var(--pl-space-xl); }\n.pl-margin-b-2xl { margin-bottom: var(--pl-space-2xl); }\n.pl-margin-b-3xl { margin-bottom: var(--pl-space-3xl); }\n\n/* Margin left */\n.pl-margin-l-0 { margin-left: 0; }\n.pl-margin-l-2xs { margin-left: var(--pl-space-2xs); }\n.pl-margin-l-xs { margin-left: var(--pl-space-xs); }\n.pl-margin-l-s { margin-left: var(--pl-space-s); }\n.pl-margin-l-m { margin-left: var(--pl-space-m); }\n.pl-margin-l-l { margin-left: var(--pl-space-l); }\n.pl-margin-l-xl { margin-left: var(--pl-space-xl); }\n.pl-margin-l-2xl { margin-left: var(--pl-space-2xl); }\n.pl-margin-l-3xl { margin-left: var(--pl-space-3xl); }\n\n/* Margin right */\n.pl-margin-r-0 { margin-right: 0; }\n.pl-margin-r-2xs { margin-right: var(--pl-space-2xs); }\n.pl-margin-r-xs { margin-right: var(--pl-space-xs); }\n.pl-margin-r-s { margin-right: var(--pl-space-s); }\n.pl-margin-r-m { margin-right: var(--pl-space-m); }\n.pl-margin-r-l { margin-right: var(--pl-space-l); }\n.pl-margin-r-xl { margin-right: var(--pl-space-xl); }\n.pl-margin-r-2xl { margin-right: var(--pl-space-2xl); }\n.pl-margin-r-3xl { margin-right: var(--pl-space-3xl); }\n\n/* Margin x (left and right) */\n.pl-margin-x-0 { margin-left: 0; margin-right: 0; }\n.pl-margin-x-2xs { margin-left: var(--pl-space-2xs); margin-right: var(--pl-space-2xs); }\n.pl-margin-x-xs { margin-left: var(--pl-space-xs); margin-right: var(--pl-space-xs); }\n.pl-margin-x-s { margin-left: var(--pl-space-s); margin-right: var(--pl-space-s); }\n.pl-margin-x-m { margin-left: var(--pl-space-m); margin-right: var(--pl-space-m); }\n.pl-margin-x-l { margin-left: var(--pl-space-l); margin-right: var(--pl-space-l); }\n.pl-margin-x-xl { margin-left: var(--pl-space-xl); margin-right: var(--pl-space-xl); }\n.pl-margin-x-2xl { margin-left: var(--pl-space-2xl); margin-right: var(--pl-space-2xl); }\n.pl-margin-x-3xl { margin-left: var(--pl-space-3xl); margin-right: var(--pl-space-3xl); }\n\n/* Margin y (top and bottom) */\n.pl-margin-y-0 { margin-top: 0; margin-bottom: 0; }\n.pl-margin-y-2xs { margin-top: var(--pl-space-2xs); margin-bottom: var(--pl-space-2xs); }\n.pl-margin-y-xs { margin-top: var(--pl-space-xs); margin-bottom: var(--pl-space-xs); }\n.pl-margin-y-s { margin-top: var(--pl-space-s); margin-bottom: var(--pl-space-s); }\n.pl-margin-y-m { margin-top: var(--pl-space-m); margin-bottom: var(--pl-space-m); }\n.pl-margin-y-l { margin-top: var(--pl-space-l); margin-bottom: var(--pl-space-l); }\n.pl-margin-y-xl { margin-top: var(--pl-space-xl); margin-bottom: var(--pl-space-xl); }\n.pl-margin-y-2xl { margin-top: var(--pl-space-2xl); margin-bottom: var(--pl-space-2xl); }\n.pl-margin-y-3xl { margin-top: var(--pl-space-3xl); margin-bottom: var(--pl-space-3xl); }\n\n/* Padding utilities */\n.pl-padding-0 { padding: 0; }\n.pl-padding-2xs { padding: var(--pl-space-2xs); }\n.pl-padding-xs { padding: var(--pl-space-xs); }\n.pl-padding-s { padding: var(--pl-space-s); }\n.pl-padding-m { padding: var(--pl-space-m); }\n.pl-padding-l { padding: var(--pl-space-l); }\n.pl-padding-xl { padding: var(--pl-space-xl); }\n.pl-padding-2xl { padding: var(--pl-space-2xl); }\n.pl-padding-3xl { padding: var(--pl-space-3xl); }\n\n/* Padding top */\n.pl-padding-t-0 { padding-top: 0; }\n.pl-padding-t-2xs { padding-top: var(--pl-space-2xs); }\n.pl-padding-t-xs { padding-top: var(--pl-space-xs); }\n.pl-padding-t-s { padding-top: var(--pl-space-s); }\n.pl-padding-t-m { padding-top: var(--pl-space-m); }\n.pl-padding-t-l { padding-top: var(--pl-space-l); }\n.pl-padding-t-xl { padding-top: var(--pl-space-xl); }\n.pl-padding-t-2xl { padding-top: var(--pl-space-2xl); }\n.pl-padding-t-3xl { padding-top: var(--pl-space-3xl); }\n\n/* Padding bottom */\n.pl-padding-b-0 { padding-bottom: 0; }\n.pl-padding-b-2xs { padding-bottom: var(--pl-space-2xs); }\n.pl-padding-b-xs { padding-bottom: var(--pl-space-xs); }\n.pl-padding-b-s { padding-bottom: var(--pl-space-s); }\n.pl-padding-b-m { padding-bottom: var(--pl-space-m); }\n.pl-padding-b-l { padding-bottom: var(--pl-space-l); }\n.pl-padding-b-xl { padding-bottom: var(--pl-space-xl); }\n.pl-padding-b-2xl { padding-bottom: var(--pl-space-2xl); }\n.pl-padding-b-3xl { padding-bottom: var(--pl-space-3xl); }\n\n/* Padding left */\n.pl-padding-l-0 { padding-left: 0; }\n.pl-padding-l-2xs { padding-left: var(--pl-space-2xs); }\n.pl-padding-l-xs { padding-left: var(--pl-space-xs); }\n.pl-padding-l-s { padding-left: var(--pl-space-s); }\n.pl-padding-l-m { padding-left: var(--pl-space-m); }\n.pl-padding-l-l { padding-left: var(--pl-space-l); }\n.pl-padding-l-xl { padding-left: var(--pl-space-xl); }\n.pl-padding-l-2xl { padding-left: var(--pl-space-2xl); }\n.pl-padding-l-3xl { padding-left: var(--pl-space-3xl); }\n\n/* Padding right */\n.pl-padding-r-0 { padding-right: 0; }\n.pl-padding-r-2xs { padding-right: var(--pl-space-2xs); }\n.pl-padding-r-xs { padding-right: var(--pl-space-xs); }\n.pl-padding-r-s { padding-right: var(--pl-space-s); }\n.pl-padding-r-m { padding-right: var(--pl-space-m); }\n.pl-padding-r-l { padding-right: var(--pl-space-l); }\n.pl-padding-r-xl { padding-right: var(--pl-space-xl); }\n.pl-padding-r-2xl { padding-right: var(--pl-space-2xl); }\n.pl-padding-r-3xl { padding-right: var(--pl-space-3xl); }\n\n/* Padding x (left and right) */\n.pl-padding-x-0 { padding-left: 0; padding-right: 0; }\n.pl-padding-x-2xs { padding-left: var(--pl-space-2xs); padding-right: var(--pl-space-2xs); }\n.pl-padding-x-xs { padding-left: var(--pl-space-xs); padding-right: var(--pl-space-xs); }\n.pl-padding-x-s { padding-left: var(--pl-space-s); padding-right: var(--pl-space-s); }\n.pl-padding-x-m { padding-left: var(--pl-space-m); padding-right: var(--pl-space-m); }\n.pl-padding-x-l { padding-left: var(--pl-space-l); padding-right: var(--pl-space-l); }\n.pl-padding-x-xl { padding-left: var(--pl-space-xl); padding-right: var(--pl-space-xl); }\n.pl-padding-x-2xl { padding-left: var(--pl-space-2xl); padding-right: var(--pl-space-2xl); }\n.pl-padding-x-3xl { padding-left: var(--pl-space-3xl); padding-right: var(--pl-space-3xl); }\n\n/* Padding y (top and bottom) */\n.pl-padding-y-0 { padding-top: 0; padding-bottom: 0; }\n.pl-padding-y-2xs { padding-top: var(--pl-space-2xs); padding-bottom: var(--pl-space-2xs); }\n.pl-padding-y-xs { padding-top: var(--pl-space-xs); padding-bottom: var(--pl-space-xs); }\n.pl-padding-y-s { padding-top: var(--pl-space-s); padding-bottom: var(--pl-space-s); }\n.pl-padding-y-m { padding-top: var(--pl-space-m); padding-bottom: var(--pl-space-m); }\n.pl-padding-y-l { padding-top: var(--pl-space-l); padding-bottom: var(--pl-space-l); }\n.pl-padding-y-xl { padding-top: var(--pl-space-xl); padding-bottom: var(--pl-space-xl); }\n.pl-padding-y-2xl { padding-top: var(--pl-space-2xl); padding-bottom: var(--pl-space-2xl); }\n.pl-padding-y-3xl { padding-top: var(--pl-space-3xl); padding-bottom: var(--pl-space-3xl); }\n\n/* Gap utilities for flexbox and grid */\n.pl-gap-0 { gap: 0; }\n.pl-gap-2xs { gap: var(--pl-space-2xs); }\n.pl-gap-xs { gap: var(--pl-space-xs); }\n.pl-gap-s { gap: var(--pl-space-s); }\n.pl-gap-m { gap: var(--pl-space-m); }\n.pl-gap-l { gap: var(--pl-space-l); }\n.pl-gap-xl { gap: var(--pl-space-xl); }\n.pl-gap-2xl { gap: var(--pl-space-2xl); }\n.pl-gap-3xl { gap: var(--pl-space-3xl); } \n\n/*\n Font size\n*/\n\n.pl-font-size-xs {\n font-size: var(--pl-font-size-xs);\n}\n\n.pl-font-size-s {\n font-size: var(--pl-font-size-s);\n}\n\n.pl-font-size-m {\n font-size: var(--pl-font-size-m);\n}\n\n.pl-font-size-l {\n font-size: var(--pl-font-size-l);\n}\n\n.pl-font-size-xl {\n font-size: var(--pl-font-size-xl);\n}\n\n.pl-font-size-2xl {\n font-size: var(--pl-font-size-2xl);\n}\n\n.pl-font-size-3xl {\n font-size: var(--pl-font-size-3xl);\n}\n\n.pl-font-size-4xl {\n font-size: var(--pl-font-size-4xl);\n}\n\n.pl-font-size-5xl {\n font-size: var(--pl-font-size-5xl);\n}\n\n/*\n Line length\n*/\n\n.pl-line-length {\n max-width: 60ch;\n}\n\n/*\n Border radius\n*/\n\n.pl-border-radius-subtle {\n border-radius: var(--pl-border-radius-subtle);\n}\n\n.pl-border-radius {\n border-radius: var(--pl-border-radius);\n}\n\n/*\n Definition list\n*/\n\n.pl-dl:not(.pl-dl--inline) {\n display: grid;\n grid-row-gap: 0.25rem;\n \n & dt {\n font-weight: 600;\n margin-top: 0.5rem;\n }\n}\n\n@media (min-width: 720px) {\n .pl-dl:not(.pl-dl--inline) {\n grid-template-columns: 12rem 1fr;\n\n & dt {\n grid-column: 1 / 2;\n margin-top: 0;\n padding-right: 1rem;\n }\n\n & dd {\n grid-column: 2 / 3;\n margin-bottom: 0;\n }\n }\n}\n\n@media (min-width: 720px) {\n .pl-dl:not(.pl-dl--inline) dt:not(:first-of-type),\n .pl-dl:not(.pl-dl--inline) dt:not(:first-of-type) + dd {\n padding-top: 0.75rem;\n margin-top: 0.5rem;\n border-top: solid 1px var(--pl-color-bg-subtle-brand);\n }\n}\n\n.pl-dl--inline {\n display: block;\n \n & dt,\n & dd {\n display: inline;\n padding-right: 0.5rem;\n margin-bottom: 0;\n }\n \n & dt {\n font-weight: 600;\n }\n \n & dt:not(:first-of-type)::before {\n content: \"\";\n display: block;\n margin-bottom: 0.5rem;\n }\n \n & a {\n color: var(--pl-color-fg-default);\n text-decoration-style: dotted;\n font-weight: 400;\n\n &:hover {\n text-decoration-style: solid;\n text-decoration-thickness: 2px;\n }\n }\n}\n\n";
|
|
@@ -1107,6 +1107,11 @@ var parsePropertyValue = (propValue, propType, isFormAssociated) => {
|
|
|
1107
1107
|
return propValue;
|
|
1108
1108
|
}
|
|
1109
1109
|
if (propValue != null && !isComplexType(propValue)) {
|
|
1110
|
+
if (propType & 4 /* Boolean */) {
|
|
1111
|
+
{
|
|
1112
|
+
return propValue === "false" ? false : propValue === "" || !!propValue;
|
|
1113
|
+
}
|
|
1114
|
+
}
|
|
1110
1115
|
if (propType & 1 /* String */) {
|
|
1111
1116
|
return String(propValue);
|
|
1112
1117
|
}
|
|
@@ -1511,10 +1516,19 @@ var insertBefore = (parent, newNode, reference) => {
|
|
|
1511
1516
|
};
|
|
1512
1517
|
var renderVdom = (hostRef, renderFnResults, isInitialLoad = false) => {
|
|
1513
1518
|
const hostElm = hostRef.$hostElement$;
|
|
1519
|
+
const cmpMeta = hostRef.$cmpMeta$;
|
|
1514
1520
|
const oldVNode = hostRef.$vnode$ || newVNode(null, null);
|
|
1515
1521
|
const isHostElement = isHost(renderFnResults);
|
|
1516
1522
|
const rootVnode = isHostElement ? renderFnResults : h(null, null, renderFnResults);
|
|
1517
1523
|
hostTagName = hostElm.tagName;
|
|
1524
|
+
if (cmpMeta.$attrsToReflect$) {
|
|
1525
|
+
rootVnode.$attrs$ = rootVnode.$attrs$ || {};
|
|
1526
|
+
cmpMeta.$attrsToReflect$.forEach(([propName, attribute]) => {
|
|
1527
|
+
{
|
|
1528
|
+
rootVnode.$attrs$[attribute] = hostElm[propName];
|
|
1529
|
+
}
|
|
1530
|
+
});
|
|
1531
|
+
}
|
|
1518
1532
|
if (isInitialLoad && rootVnode.$attrs$) {
|
|
1519
1533
|
for (const key of Object.keys(rootVnode.$attrs$)) {
|
|
1520
1534
|
if (hostElm.hasAttribute(key) && !["key", "ref", "style", "class"].includes(key)) {
|
|
@@ -1718,6 +1732,7 @@ var setValue = (ref, propName, newVal, cmpMeta) => {
|
|
|
1718
1732
|
`Couldn't find host element for "${cmpMeta.$tagName$}" as it is unknown to this Stencil runtime. This usually happens when integrating a 3rd party Stencil component with another Stencil component or application. Please reach out to the maintainers of the 3rd party Stencil component or report this on the Stencil Discord server (https://chat.stenciljs.com) or comment on this similar [GitHub issue](https://github.com/stenciljs/core/issues/5457).`
|
|
1719
1733
|
);
|
|
1720
1734
|
}
|
|
1735
|
+
const elm = hostRef.$hostElement$ ;
|
|
1721
1736
|
const oldVal = hostRef.$instanceValues$.get(propName);
|
|
1722
1737
|
const flags = hostRef.$flags$;
|
|
1723
1738
|
const instance = hostRef.$lazyInstance$ ;
|
|
@@ -1729,6 +1744,18 @@ var setValue = (ref, propName, newVal, cmpMeta) => {
|
|
|
1729
1744
|
if ((!(flags & 8 /* isConstructingInstance */) || oldVal === void 0) && didValueChange) {
|
|
1730
1745
|
hostRef.$instanceValues$.set(propName, newVal);
|
|
1731
1746
|
if (instance) {
|
|
1747
|
+
if (cmpMeta.$watchers$ && flags & 128 /* isWatchReady */) {
|
|
1748
|
+
const watchMethods = cmpMeta.$watchers$[propName];
|
|
1749
|
+
if (watchMethods) {
|
|
1750
|
+
watchMethods.map((watchMethodName) => {
|
|
1751
|
+
try {
|
|
1752
|
+
instance[watchMethodName](newVal, oldVal, propName);
|
|
1753
|
+
} catch (e) {
|
|
1754
|
+
consoleError(e, elm);
|
|
1755
|
+
}
|
|
1756
|
+
});
|
|
1757
|
+
}
|
|
1758
|
+
}
|
|
1732
1759
|
if ((flags & (2 /* hasRendered */ | 16 /* isQueuedForUpdate */)) === 2 /* hasRendered */) {
|
|
1733
1760
|
if (instance.componentShouldUpdate) {
|
|
1734
1761
|
if (instance.componentShouldUpdate(newVal, oldVal, propName) === false) {
|
|
@@ -1746,6 +1773,17 @@ var proxyComponent = (Cstr, cmpMeta, flags) => {
|
|
|
1746
1773
|
var _a, _b;
|
|
1747
1774
|
const prototype = Cstr.prototype;
|
|
1748
1775
|
if (cmpMeta.$members$ || BUILD.propChangeCallback) {
|
|
1776
|
+
{
|
|
1777
|
+
if (Cstr.watchers && !cmpMeta.$watchers$) {
|
|
1778
|
+
cmpMeta.$watchers$ = Cstr.watchers;
|
|
1779
|
+
}
|
|
1780
|
+
if (Cstr.deserializers && !cmpMeta.$deserializers$) {
|
|
1781
|
+
cmpMeta.$deserializers$ = Cstr.deserializers;
|
|
1782
|
+
}
|
|
1783
|
+
if (Cstr.serializers && !cmpMeta.$serializers$) {
|
|
1784
|
+
cmpMeta.$serializers$ = Cstr.serializers;
|
|
1785
|
+
}
|
|
1786
|
+
}
|
|
1749
1787
|
const members = Object.entries((_a = cmpMeta.$members$) != null ? _a : {});
|
|
1750
1788
|
members.map(([memberName, [memberFlags]]) => {
|
|
1751
1789
|
if ((memberFlags & 31 /* Prop */ || (flags & 2 /* proxyState */) && memberFlags & 32 /* State */)) {
|
|
@@ -1864,8 +1902,12 @@ var proxyComponent = (Cstr, cmpMeta, flags) => {
|
|
|
1864
1902
|
/* @__PURE__ */ new Set([
|
|
1865
1903
|
...Object.keys((_b = cmpMeta.$watchers$) != null ? _b : {}),
|
|
1866
1904
|
...members.filter(([_, m]) => m[0] & 31 /* HasAttribute */).map(([propName, m]) => {
|
|
1905
|
+
var _a2;
|
|
1867
1906
|
const attrName = m[1] || propName;
|
|
1868
1907
|
attrNameToPropName.set(attrName, propName);
|
|
1908
|
+
if (m[0] & 512 /* ReflectAttr */) {
|
|
1909
|
+
(_a2 = cmpMeta.$attrsToReflect$) == null ? void 0 : _a2.push([propName, attrName]);
|
|
1910
|
+
}
|
|
1869
1911
|
return attrName;
|
|
1870
1912
|
})
|
|
1871
1913
|
])
|
|
@@ -1894,6 +1936,11 @@ var initializeComponent = async (elm, hostRef, cmpMeta, hmrVersionId) => {
|
|
|
1894
1936
|
throw new Error(`Constructor for "${cmpMeta.$tagName$}#${hostRef.$modeName$}" was not found`);
|
|
1895
1937
|
}
|
|
1896
1938
|
if (!Cstr.isProxied) {
|
|
1939
|
+
{
|
|
1940
|
+
cmpMeta.$watchers$ = Cstr.watchers;
|
|
1941
|
+
cmpMeta.$serializers$ = Cstr.serializers;
|
|
1942
|
+
cmpMeta.$deserializers$ = Cstr.deserializers;
|
|
1943
|
+
}
|
|
1897
1944
|
proxyComponent(Cstr, cmpMeta, 2 /* proxyState */);
|
|
1898
1945
|
Cstr.isProxied = true;
|
|
1899
1946
|
}
|
|
@@ -1909,6 +1956,9 @@ var initializeComponent = async (elm, hostRef, cmpMeta, hmrVersionId) => {
|
|
|
1909
1956
|
{
|
|
1910
1957
|
hostRef.$flags$ &= -9 /* isConstructingInstance */;
|
|
1911
1958
|
}
|
|
1959
|
+
{
|
|
1960
|
+
hostRef.$flags$ |= 128 /* isWatchReady */;
|
|
1961
|
+
}
|
|
1912
1962
|
endNewInstance();
|
|
1913
1963
|
fireConnectedCallback(hostRef.$lazyInstance$, elm);
|
|
1914
1964
|
} else {
|
|
@@ -2053,6 +2103,7 @@ var bootstrapLazy = (lazyBundles, options = {}) => {
|
|
|
2053
2103
|
let hasSlotRelocation = false;
|
|
2054
2104
|
lazyBundles.map((lazyBundle) => {
|
|
2055
2105
|
lazyBundle[1].map((compactMeta) => {
|
|
2106
|
+
var _a2, _b, _c;
|
|
2056
2107
|
const cmpMeta = {
|
|
2057
2108
|
$flags$: compactMeta[0],
|
|
2058
2109
|
$tagName$: compactMeta[1],
|
|
@@ -2068,6 +2119,14 @@ var bootstrapLazy = (lazyBundles, options = {}) => {
|
|
|
2068
2119
|
{
|
|
2069
2120
|
cmpMeta.$listeners$ = compactMeta[3];
|
|
2070
2121
|
}
|
|
2122
|
+
{
|
|
2123
|
+
cmpMeta.$attrsToReflect$ = [];
|
|
2124
|
+
}
|
|
2125
|
+
{
|
|
2126
|
+
cmpMeta.$watchers$ = (_a2 = compactMeta[4]) != null ? _a2 : {};
|
|
2127
|
+
cmpMeta.$serializers$ = (_b = compactMeta[5]) != null ? _b : {};
|
|
2128
|
+
cmpMeta.$deserializers$ = (_c = compactMeta[6]) != null ? _c : {};
|
|
2129
|
+
}
|
|
2071
2130
|
const tagName = cmpMeta.$tagName$;
|
|
2072
2131
|
const HostElement = class extends HTMLElement {
|
|
2073
2132
|
// StencilLazyHost
|
|
@@ -2210,6 +2269,6 @@ var hostListenerOpts = (flags) => supportsListenerOptions ? {
|
|
|
2210
2269
|
var setNonce = (nonce) => plt.$nonce$ = nonce;
|
|
2211
2270
|
|
|
2212
2271
|
export { getAssetPath as a, bootstrapLazy as b, createEvent as c, getElement as d, setAssetPath as e, globalScripts as g, h, promiseResolve as p, registerInstance as r, setNonce as s };
|
|
2213
|
-
//# sourceMappingURL=
|
|
2272
|
+
//# sourceMappingURL=p-Cst_89-s.js.map
|
|
2214
2273
|
|
|
2215
|
-
//# sourceMappingURL=
|
|
2274
|
+
//# sourceMappingURL=p-Cst_89-s.js.map
|