@certrev/cert-block 1.1.0 → 1.1.1
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/CHANGELOG.md +41 -0
- package/README.md +20 -6
- package/dist/components/render-cert-block.d.ts.map +1 -1
- package/dist/components/render-cert-block.js +3 -6
- package/dist/components/render-cert-block.js.map +1 -1
- package/dist/modal/certrev-cert-modal.d.ts +34 -1
- package/dist/modal/certrev-cert-modal.d.ts.map +1 -1
- package/dist/modal/certrev-cert-modal.js +40 -2
- package/dist/modal/certrev-cert-modal.js.map +1 -1
- package/dist/modal/certrev-cert.entry.d.ts.map +1 -1
- package/dist/modal/certrev-cert.entry.js +2 -4
- package/dist/modal/certrev-cert.entry.js.map +1 -1
- package/dist/modal/certrev-cert.js +4 -4
- package/dist/modal/deprecated.d.ts +15 -0
- package/dist/modal/deprecated.d.ts.map +1 -0
- package/dist/modal/deprecated.js +22 -0
- package/dist/modal/deprecated.js.map +1 -0
- package/dist/modal/ftc-disclosure.d.ts +7 -3
- package/dist/modal/ftc-disclosure.d.ts.map +1 -1
- package/dist/modal/ftc-disclosure.js +7 -3
- package/dist/modal/ftc-disclosure.js.map +1 -1
- package/dist/modal/index.d.ts +4 -3
- package/dist/modal/index.d.ts.map +1 -1
- package/dist/modal/index.js +4 -3
- package/dist/modal/index.js.map +1 -1
- package/dist/modal/interactions.d.ts +20 -4
- package/dist/modal/interactions.d.ts.map +1 -1
- package/dist/modal/interactions.js +34 -7
- package/dist/modal/interactions.js.map +1 -1
- package/package.json +1 -1
- package/src/components/render-cert-block.ts +3 -6
- package/src/modal/certrev-cert-modal.ts +45 -2
- package/src/modal/certrev-cert.entry.ts +2 -4
- package/src/modal/deprecated.ts +25 -0
- package/src/modal/ftc-disclosure.ts +7 -3
- package/src/modal/index.ts +4 -3
- package/src/modal/interactions.ts +37 -7
- package/dist/modal/ftc-guard.d.ts +0 -85
- package/dist/modal/ftc-guard.d.ts.map +0 -1
- package/dist/modal/ftc-guard.js +0 -150
- package/dist/modal/ftc-guard.js.map +0 -1
- package/src/modal/ftc-guard.ts +0 -174
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,47 @@ change the rendered cert output and never break a compiling integration** (regis
|
|
|
5
5
|
exports, types). Anything that would alter what a visitor sees, or require integration changes,
|
|
6
6
|
is announced loudly here first.
|
|
7
7
|
|
|
8
|
+
## 1.1.1 · 2026-09-26
|
|
9
|
+
|
|
10
|
+
Patch: the browser bundle no longer hides or replaces a face, and each certificate control opens
|
|
11
|
+
its own face's modal. Nothing about the rendered card changes; no integration needs a code change.
|
|
12
|
+
|
|
13
|
+
- **No runtime FTC disclosure guard.** 1.1.0's `dist/modal/certrev-cert.js` checked every memo on
|
|
14
|
+
DOMContentLoaded and on every DOM mutation, and replaced any memo whose disclosure line was
|
|
15
|
+
missing, altered or had a zero-size box with "This CertREV verification cannot be displayed". A
|
|
16
|
+
face that loads inside a closed `<details>`, an inactive tab or a collapsed accordion has a zero
|
|
17
|
+
box, so it was replaced for good and never showed when the visitor opened it. The guard is gone
|
|
18
|
+
(`src/modal/ftc-guard.ts` deleted; the bundle installs no `MutationObserver`, never writes
|
|
19
|
+
`data-certrev-ftc-neutralized` and contains no notice text). Whether a face shows its disclosure
|
|
20
|
+
is settled where the face is configured. The disclosure line itself is unchanged: every face still
|
|
21
|
+
renders it. A WordPress page can drop CSS that hid a card whose memo the guard had neutralized.
|
|
22
|
+
- **`installFtcGuard` stays exported, as a no-op.** It is public on `@certrev/cert-block/modal`,
|
|
23
|
+
and the contract above says a patch never breaks a compiling integration, so the name remains,
|
|
24
|
+
marked `@deprecated`. It installs nothing; its first call per document dispatches a
|
|
25
|
+
`certrev:deprecated-api` event on the document (`detail: { api: 'installFtcGuard',
|
|
26
|
+
removedIn: '1.1.1' }`) so a caller that still counts on it can find out. It goes in 2.0.
|
|
27
|
+
- **Each control opens its own face's modal.** A `[data-certrev-modal-open]` control used to open
|
|
28
|
+
`document.querySelector('certrev-cert-modal')`, so on a page with two faces (a WordPress Query
|
|
29
|
+
Loop, a related-posts block) every control opened the FIRST face's certificate. A control now
|
|
30
|
+
opens the modal in the smallest subtree around it that holds exactly one, and inside a face root
|
|
31
|
+
(`[data-certrev-cert]`, the WordPress plugin's per-face wrapper) only that face's modal counts, so
|
|
32
|
+
the search never reaches a neighbour. A single Shopify embed (card and controls placed apart) and
|
|
33
|
+
a Builder page-level modal resolve exactly as before. A control that cannot tell which modal is
|
|
34
|
+
its own opens nothing and follows its own `href`, and says so: it gets
|
|
35
|
+
`data-certrev-modal-unresolved="ambiguous"` and a bubbling `certrev:modal-unresolved` event
|
|
36
|
+
(`detail: { reason, modals }`). A WordPress page no longer needs to print one modal per page.
|
|
37
|
+
- **Revocation hides only its own face's controls.** When the modal's live Delivery-API fetch
|
|
38
|
+
returns a revocation or expiry, `markSuppressed()` used to hide every
|
|
39
|
+
`[data-certrev-modal-open]` control in the document. It now hides the controls whose own modal is
|
|
40
|
+
that element; another face's certificate links stay.
|
|
41
|
+
- **Unchanged:** the rendered output of every renderer and component, the exports (`openModal` and
|
|
42
|
+
`openCertModal` keep their document-level behaviour; controls no longer go through them),
|
|
43
|
+
placement, interactions other than the modal lookup, badge revalidation, the verify client, and
|
|
44
|
+
`FTC_DISCLOSURE_LINE`.
|
|
45
|
+
- **For this repo's own suite:** `src/modal/ftc-guard.test.ts` goes with the module, and so does
|
|
46
|
+
any assertion that the entry installs the guard. New: `src/modal/closed-container-face.test.ts`
|
|
47
|
+
and `src/modal/own-face-modal.test.ts`.
|
|
48
|
+
|
|
8
49
|
## 1.1.0 · 2026-09-26
|
|
9
50
|
|
|
10
51
|
Minor: the Builder card can paint from the signed envelope and the brand's render def. **Read
|
package/README.md
CHANGED
|
@@ -66,8 +66,8 @@ import { certRevCertComponent, BUILDER_REGISTRATION, CERT_COMPONENT_NAME } from
|
|
|
66
66
|
import { envelopeCardInput, faceFromDef, themeFromDef, layoutFor, CERT_FACE_FIELDS } from '@certrev/cert-block/builder/face'
|
|
67
67
|
|
|
68
68
|
// Certificate modal: the ONE SIDE-EFFECTING entry in the package. Importing it registers
|
|
69
|
-
// <certrev-cert-modal> and, in a browser, starts
|
|
70
|
-
//
|
|
69
|
+
// <certrev-cert-modal> and, in a browser, starts three DOM passes (placement, interactions,
|
|
70
|
+
// badge revalidation). Browser only. Never import it from server code. Most
|
|
71
71
|
// integrations should load the prebuilt IIFE as an external <script> instead (see below).
|
|
72
72
|
import '@certrev/cert-block/modal'
|
|
73
73
|
import { CERT_ISSUER_KID, CERT_ISSUER_PUBLIC_KEY_PEM, CERT_MODAL_TAG } from '@certrev/cert-block/modal'
|
|
@@ -304,8 +304,9 @@ page that loaded the modal script and carries `data-delivery-api` + `data-platfo
|
|
|
304
304
|
`data-external-id`, the modal fetches the Delivery API live. If that returns a revocation
|
|
305
305
|
tombstone, or an envelope with `revokedAt` set or `expiresAt` passed, the modal refuses to open
|
|
306
306
|
and calls `markSuppressed()`: it stamps `data-certrev-suppressed` on itself and sets `hidden` +
|
|
307
|
-
`aria-hidden` on
|
|
308
|
-
|
|
307
|
+
`aria-hidden` on the `[data-certrev-modal-open]` controls **of its own face** (the controls that
|
|
308
|
+
open that element; see "Several faces on one page" below). So that face's certificate links disappear on that page view, and
|
|
309
|
+
another face on the same page keeps its own. The card body (the reviewer's name, the credential, the memo,
|
|
309
310
|
the "Expert reviewed" chrome) is not touched, and nothing happens at all for a visitor who never
|
|
310
311
|
clicks, for a page without the modal script, or for a crawler. One more way to lose even that: the
|
|
311
312
|
modal prefers a synchronous envelope source, so if the page inlines one (a light-DOM
|
|
@@ -369,6 +370,19 @@ and is fine; it just means the origin has to be in `font-src`.
|
|
|
369
370
|
`data-delivery-api` is the **origin only**: the element appends
|
|
370
371
|
`/api/cert/v1/delivery/{platform}/{externalId}`.
|
|
371
372
|
|
|
373
|
+
**Several faces on one page.** Each `[data-certrev-modal-open]` control opens its **own** face's
|
|
374
|
+
`<certrev-cert-modal>`, never simply the first one in the document (1.1.0 and earlier did that, so
|
|
375
|
+
every control on a two-face page opened the first face's certificate). A control's own modal is the
|
|
376
|
+
one in the smallest subtree around the control that holds exactly one; when the control sits inside
|
|
377
|
+
a face root `[data-certrev-cert]` (the WordPress plugin's per-face wrapper), only modals of that
|
|
378
|
+
same face count and the search never leaves it. So give each face its own modal, and wrap each face
|
|
379
|
+
in `data-certrev-cert` when faces share a container. A single face whose card and controls sit apart
|
|
380
|
+
(the Shopify embed), or one page-level modal (a Builder page), resolves as before. A control that
|
|
381
|
+
cannot tell which modal is its own (its face has none and it sits between two other faces' modals)
|
|
382
|
+
opens nothing: it gets `data-certrev-modal-unresolved="ambiguous"`, a bubbling
|
|
383
|
+
`certrev:modal-unresolved` event (`detail: { reason, modals }`) fires on it, and a link control
|
|
384
|
+
follows its own `href`.
|
|
385
|
+
|
|
372
386
|
### PULL: the editor-placed anchor (alternative)
|
|
373
387
|
|
|
374
388
|
`CertRevProvider` + the zero-input `CertRevAnchor` (`@certrev/cert-block/builder`) let an editor
|
|
@@ -603,7 +617,7 @@ alongside each modal module. The load-bearing ones:
|
|
|
603
617
|
- **`__tests__/escape-family.test.ts`** puts both escape families (`components/` and `modal/`) against wrong-typed input, not just null: a half-filled CMS object must degrade, never throw.
|
|
604
618
|
- **`__tests__/webcomponent.test.tsx`**: the shared `renderBadgeHtml` string renderer (hand-escaping, unsafe-URL/color dropping, compact style) and the `<certrev-badge>` custom element (idempotent registration, SSR light-DOM preservation, client-mode fail-closed without a resolver).
|
|
605
619
|
- **`builder/__tests__/builder.test.tsx`** covers the PUSH card and its registration: the wire-type ⇄ inputs parity lock, the fused-credential gate, and the mistyped-option degradation.
|
|
606
|
-
- **`modal/*.test.ts`**, per module: the modal element (tombstone → `markSuppressed`), the dialog view, interactions, placement, badge revalidation,
|
|
620
|
+
- **`modal/*.test.ts`**, per module: the modal element (tombstone → `markSuppressed`), the dialog view, interactions, placement, badge revalidation, and the Delivery-API verify client. `modal/own-face-modal.test.ts` puts two faces on one page and proves each control opens its own face's modal; `modal/closed-container-face.test.ts` proves a face that loads inside a closed `<details>`, tab or accordion is left alone and renders when opened (there is no runtime disclosure guard).
|
|
607
621
|
- **`__tests__/readme-version.test.ts`** + **`__tests__/readme-contract.test.ts`** pin the claims in this file that rot silently: the version stamp against `package.json`, the key id, the route-example heading, and every `exports` subpath appearing under Public API.
|
|
608
622
|
|
|
609
623
|
Facts are mocked via `makeMockPayload` / `makeSignedEnvelope` (`src/contract/fixtures.ts`, also
|
|
@@ -611,7 +625,7 @@ published at `@certrev/cert-block/fixtures`).
|
|
|
611
625
|
|
|
612
626
|
## Version
|
|
613
627
|
|
|
614
|
-
`1.1.
|
|
628
|
+
`1.1.1`: see [CHANGELOG.md](./CHANGELOG.md) for the release history and the semver contract
|
|
615
629
|
(patch/minor never change the rendered cert output or break a compiling integration). Publishes
|
|
616
630
|
**publicly** to npm as `@certrev/cert-block` (`publishConfig.access: public`) via GitHub Actions
|
|
617
631
|
trusted publishing (OIDC); the internal `@certrev` GitHub-Packages channel mirrors it.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-cert-block.d.ts","sourceRoot":"","sources":["../../src/components/render-cert-block.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgEG;AAcH,OAAO,EAMN,KAAK,kBAAkB,EAEvB,MAAM,iBAAiB,CAAA;AAExB,wCAAwC;AACxC,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAA;AAE7D,0GAA0G;AAC1G,MAAM,MAAM,eAAe,GAAG,aAAa,GAAG,QAAQ,CAAA;AAEtD;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAA;CACxC;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,cAAc;IAC9B,oDAAoD;IACpD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,qEAAqE;IACrE,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,qFAAqF;IACrF,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,6EAA6E;IAC7E,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,iFAAiF;IACjF,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAA;IACrC,6EAA6E;IAC7E,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,oFAAoF;IACpF,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;IACrB,yEAAyE;IACzE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,iEAAiE;IACjE,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B;;;;;;;;OAQG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACxC;AAED,2CAA2C;AAC3C,MAAM,WAAW,oBAAoB;IACpC,oFAAoF;IACpF,QAAQ,CAAC,IAAI,CAAC,EAAE,eAAe,CAAA;IAC/B,+FAA+F;IAC/F,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAA;IAC5C,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAA;IAC9B;;;OAGG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa,CAAA;IAC7B;;;;;;;;OAQG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAA;IAC1C;;;;;;;OAOG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAC7B;
|
|
1
|
+
{"version":3,"file":"render-cert-block.d.ts","sourceRoot":"","sources":["../../src/components/render-cert-block.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgEG;AAcH,OAAO,EAMN,KAAK,kBAAkB,EAEvB,MAAM,iBAAiB,CAAA;AAExB,wCAAwC;AACxC,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAA;AAE7D,0GAA0G;AAC1G,MAAM,MAAM,eAAe,GAAG,aAAa,GAAG,QAAQ,CAAA;AAEtD;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAA;CACxC;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,cAAc;IAC9B,oDAAoD;IACpD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,qEAAqE;IACrE,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,qFAAqF;IACrF,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,6EAA6E;IAC7E,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,iFAAiF;IACjF,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAA;IACrC,6EAA6E;IAC7E,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,oFAAoF;IACpF,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;IACrB,yEAAyE;IACzE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,iEAAiE;IACjE,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B;;;;;;;;OAQG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACxC;AAED,2CAA2C;AAC3C,MAAM,WAAW,oBAAoB;IACpC,oFAAoF;IACpF,QAAQ,CAAC,IAAI,CAAC,EAAE,eAAe,CAAA;IAC/B,+FAA+F;IAC/F,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAA;IAC5C,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAA;IAC9B;;;OAGG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa,CAAA;IAC7B;;;;;;;;OAQG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAA;IAC1C;;;;;;;OAOG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAC7B;AA6oBD;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,MAAM,CAwCnE"}
|
|
@@ -542,12 +542,9 @@ function floatingPill(facts, placed) {
|
|
|
542
542
|
// `data-certrev-*`-hooked building blocks the locked layouts use, so the custom face
|
|
543
543
|
// carries the same markers as banner/sidebar and the crawl monitor reads them alike.
|
|
544
544
|
//
|
|
545
|
-
//
|
|
546
|
-
//
|
|
547
|
-
//
|
|
548
|
-
// NONE of its three scope-line sites. The kill switch therefore cannot see anything
|
|
549
|
-
// renderCertBlock produces, on ANY face. Whether it should is a live design question
|
|
550
|
-
// (which surfaces the switch covers) — not something to settle by quietly adding hooks.
|
|
545
|
+
// No runtime guard watches any of it: the `modal/ftc-guard.ts` kill switch (which never saw
|
|
546
|
+
// this renderer's output anyway: it keyed on `.certrev-memo`) was removed in 1.1.1. Whether a
|
|
547
|
+
// face shows its scope line is decided by its configuration, not policed in the page.
|
|
551
548
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
552
549
|
function renderCustomFace(facts, placed, responsive = false) {
|
|
553
550
|
const parts = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-cert-block.js","sourceRoot":"","sources":["../../src/components/render-cert-block.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"render-cert-block.js","sourceRoot":"","sources":["../../src/components/render-cert-block.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,10 +23,42 @@
|
|
|
23
23
|
* so the document-level delegate can't see the close controls.
|
|
24
24
|
* - Fonts inject at document level on first open (font faces don't scope into a
|
|
25
25
|
* shadow root); deferring to first open avoids loading them on every article view.
|
|
26
|
+
* - A page can carry several faces, each with its own element (a WordPress Query Loop, a
|
|
27
|
+
* related-posts block). A trigger opens its OWN face's element (`ownCertModal`), never the
|
|
28
|
+
* document's first one, and a suppressed element hides only its own face's triggers.
|
|
26
29
|
*/
|
|
27
30
|
import { type CertDeliveryArtifact } from '@certrev/cert-contract';
|
|
28
31
|
export declare const CERT_MODAL_TAG = "certrev-cert-modal";
|
|
29
32
|
type ModalKind = 'cert' | 'expert';
|
|
33
|
+
/**
|
|
34
|
+
* One rendered face on a surface that can print several per page: the WordPress plugin wraps each
|
|
35
|
+
* face's card, memo and rail wraps in `<div data-certrev-cert="1">`. A trigger never reaches a
|
|
36
|
+
* `<certrev-cert-modal>` in another face root, and one outside every face root never reaches a
|
|
37
|
+
* modal inside one.
|
|
38
|
+
*/
|
|
39
|
+
export declare const FACE_ROOT_SELECTOR = "[data-certrev-cert]";
|
|
40
|
+
/** The element a trigger opens, or why it has none. */
|
|
41
|
+
export type OwnCertModal = {
|
|
42
|
+
readonly modal: Element;
|
|
43
|
+
readonly reason: null;
|
|
44
|
+
} | {
|
|
45
|
+
readonly modal: null;
|
|
46
|
+
readonly reason: 'none' | 'ambiguous';
|
|
47
|
+
readonly count: number;
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* The `<certrev-cert-modal>` that belongs to `trigger`'s face: the one in the SMALLEST subtree that
|
|
51
|
+
* holds both. Walk up from the trigger; the first ancestor holding a modal decides:
|
|
52
|
+
* - exactly one → that is the face's modal. On Shopify the card wrap (badge + modal) and the memo
|
|
53
|
+
* wrap (triggers only) are placed apart in the article, and their nearest common container holds
|
|
54
|
+
* the page's one modal; a Builder page puts one modal beside the CMS content; a WordPress face root
|
|
55
|
+
* holds its own.
|
|
56
|
+
* - more than one → `ambiguous`: the trigger's face has no modal of its own and sits between other
|
|
57
|
+
* faces'. Picking one would open another cert's certificate, so there is no answer.
|
|
58
|
+
* The walk never leaves the trigger's face root, and only counts modals in that same face root (or,
|
|
59
|
+
* for a trigger in none, modals in none), so a WordPress face without a modal resolves to `none`.
|
|
60
|
+
*/
|
|
61
|
+
export declare function ownCertModal(trigger: Element): OwnCertModal;
|
|
30
62
|
export declare class CertRevCertModal extends HTMLElement {
|
|
31
63
|
private root;
|
|
32
64
|
private rendered;
|
|
@@ -49,7 +81,8 @@ export declare class CertRevCertModal extends HTMLElement {
|
|
|
49
81
|
/**
|
|
50
82
|
* The modal kill-switch: a fetched envelope is REVOKED/EXPIRED. Don't open;
|
|
51
83
|
* mark the host suppressed (mirrors the badge revalidation's `data-certrev-suppressed`) and
|
|
52
|
-
* hide
|
|
84
|
+
* hide THIS face's light-DOM triggers (those whose `ownCertModal` is this element) so a stale
|
|
85
|
+
* click can't re-open a pulled cert. Another face's triggers on the page are not touched.
|
|
53
86
|
*/
|
|
54
87
|
private markSuppressed;
|
|
55
88
|
private onShadowClick;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"certrev-cert-modal.d.ts","sourceRoot":"","sources":["../../src/modal/certrev-cert-modal.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"certrev-cert-modal.d.ts","sourceRoot":"","sources":["../../src/modal/certrev-cert-modal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAAE,KAAK,oBAAoB,EAAe,MAAM,wBAAwB,CAAA;AAK/E,eAAO,MAAM,cAAc,uBAAuB,CAAA;AAClD,KAAK,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAA;AAElC;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,wBAAwB,CAAA;AAEvD,uDAAuD;AACvD,MAAM,MAAM,YAAY,GACrB;IAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAA;CAAE,GAClD;IAAE,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAE1F;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,CAW3D;AA+CD,qBAAa,gBAAiB,SAAQ,WAAW;IAChD,OAAO,CAAC,IAAI,CAAY;IACxB,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,OAAO,CAAgC;IAC/C,OAAO,CAAC,aAAa,CAA6B;;IAiBlD;;;;OAIG;IACH,IAAI,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO;IAgB9B,kFAAkF;IAClF,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,cAAc;YAQR,aAAa;IA4C3B,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,IAAI;IAKZ;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,aAAa;CAcrB;AAWD;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAQ/F;AAED,oFAAoF;AACpF,wBAAgB,eAAe,IAAI,IAAI,CAGtC"}
|
|
@@ -23,12 +23,47 @@
|
|
|
23
23
|
* so the document-level delegate can't see the close controls.
|
|
24
24
|
* - Fonts inject at document level on first open (font faces don't scope into a
|
|
25
25
|
* shadow root); deferring to first open avoids loading them on every article view.
|
|
26
|
+
* - A page can carry several faces, each with its own element (a WordPress Query Loop, a
|
|
27
|
+
* related-posts block). A trigger opens its OWN face's element (`ownCertModal`), never the
|
|
28
|
+
* document's first one, and a suppressed element hides only its own face's triggers.
|
|
26
29
|
*/
|
|
27
30
|
import { isTombstone } from '@certrev/cert-contract';
|
|
28
31
|
import { CERT_FONT_FACE_CSS, CERT_FONTS_ORIGIN } from './font-face.js';
|
|
29
32
|
import { renderCertDialogInner, renderExpertDialogInner } from './cert-modal-view.js';
|
|
30
33
|
import { CERT_MODAL_CSS } from './certrev-cert-modal.styles.js';
|
|
31
34
|
export const CERT_MODAL_TAG = 'certrev-cert-modal';
|
|
35
|
+
/**
|
|
36
|
+
* One rendered face on a surface that can print several per page: the WordPress plugin wraps each
|
|
37
|
+
* face's card, memo and rail wraps in `<div data-certrev-cert="1">`. A trigger never reaches a
|
|
38
|
+
* `<certrev-cert-modal>` in another face root, and one outside every face root never reaches a
|
|
39
|
+
* modal inside one.
|
|
40
|
+
*/
|
|
41
|
+
export const FACE_ROOT_SELECTOR = '[data-certrev-cert]';
|
|
42
|
+
/**
|
|
43
|
+
* The `<certrev-cert-modal>` that belongs to `trigger`'s face: the one in the SMALLEST subtree that
|
|
44
|
+
* holds both. Walk up from the trigger; the first ancestor holding a modal decides:
|
|
45
|
+
* - exactly one → that is the face's modal. On Shopify the card wrap (badge + modal) and the memo
|
|
46
|
+
* wrap (triggers only) are placed apart in the article, and their nearest common container holds
|
|
47
|
+
* the page's one modal; a Builder page puts one modal beside the CMS content; a WordPress face root
|
|
48
|
+
* holds its own.
|
|
49
|
+
* - more than one → `ambiguous`: the trigger's face has no modal of its own and sits between other
|
|
50
|
+
* faces'. Picking one would open another cert's certificate, so there is no answer.
|
|
51
|
+
* The walk never leaves the trigger's face root, and only counts modals in that same face root (or,
|
|
52
|
+
* for a trigger in none, modals in none), so a WordPress face without a modal resolves to `none`.
|
|
53
|
+
*/
|
|
54
|
+
export function ownCertModal(trigger) {
|
|
55
|
+
const face = trigger.closest(FACE_ROOT_SELECTOR);
|
|
56
|
+
for (let node = trigger; node; node = node.parentElement) {
|
|
57
|
+
const found = Array.from(node.querySelectorAll(CERT_MODAL_TAG)).filter((m) => m.closest(FACE_ROOT_SELECTOR) === face);
|
|
58
|
+
if (found.length === 1)
|
|
59
|
+
return { modal: found[0], reason: null };
|
|
60
|
+
if (found.length > 1)
|
|
61
|
+
return { modal: null, reason: 'ambiguous', count: found.length };
|
|
62
|
+
if (node === face)
|
|
63
|
+
break;
|
|
64
|
+
}
|
|
65
|
+
return { modal: null, reason: 'none', count: 0 };
|
|
66
|
+
}
|
|
32
67
|
/** Shared constructable stylesheet (one per document lifetime). */
|
|
33
68
|
let sharedSheet = null;
|
|
34
69
|
function supportsConstructableSheets() {
|
|
@@ -200,11 +235,14 @@ export class CertRevCertModal extends HTMLElement {
|
|
|
200
235
|
/**
|
|
201
236
|
* The modal kill-switch: a fetched envelope is REVOKED/EXPIRED. Don't open;
|
|
202
237
|
* mark the host suppressed (mirrors the badge revalidation's `data-certrev-suppressed`) and
|
|
203
|
-
* hide
|
|
238
|
+
* hide THIS face's light-DOM triggers (those whose `ownCertModal` is this element) so a stale
|
|
239
|
+
* click can't re-open a pulled cert. Another face's triggers on the page are not touched.
|
|
204
240
|
*/
|
|
205
241
|
markSuppressed() {
|
|
206
242
|
this.setAttribute('data-certrev-suppressed', '');
|
|
207
|
-
for (const t of Array.from(
|
|
243
|
+
for (const t of Array.from(this.ownerDocument.querySelectorAll('[data-certrev-modal-open]'))) {
|
|
244
|
+
if (ownCertModal(t).modal !== this)
|
|
245
|
+
continue;
|
|
208
246
|
t.setAttribute('hidden', '');
|
|
209
247
|
t.setAttribute('aria-hidden', 'true');
|
|
210
248
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"certrev-cert-modal.js","sourceRoot":"","sources":["../../src/modal/certrev-cert-modal.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"certrev-cert-modal.js","sourceRoot":"","sources":["../../src/modal/certrev-cert-modal.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"certrev-cert.entry.d.ts","sourceRoot":"","sources":["../../src/modal/certrev-cert.entry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"certrev-cert.entry.d.ts","sourceRoot":"","sources":["../../src/modal/certrev-cert.entry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,yBAAyB,CAAA;AAMhC;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,kBAAkB,CAAA;AAC9C,eAAO,MAAM,0BAA0B,uHAEd,CAAA"}
|
|
@@ -8,7 +8,6 @@
|
|
|
8
8
|
* canonical `verifyEnvelope` kernel) and kicks off the DOM revalidation pass. No crypto here.
|
|
9
9
|
*/
|
|
10
10
|
import './certrev-cert-modal.js'; // registers the unified <certrev-cert-modal> element
|
|
11
|
-
import { installFtcGuard } from './ftc-guard.js';
|
|
12
11
|
import { initCertInteractionsOnReady } from './interactions.js';
|
|
13
12
|
import { initCertPlacement } from './placement.js';
|
|
14
13
|
import { initBadgeRevalidation } from './revalidate.js';
|
|
@@ -31,11 +30,10 @@ if (typeof document !== 'undefined') {
|
|
|
31
30
|
// in-article position — so the badge re-verify pass below finds `<certrev-badge>` already in
|
|
32
31
|
// place and never re-runs against a detached/re-attached node.
|
|
33
32
|
initCertPlacement(document);
|
|
33
|
+
// No disclosure guard since 1.1.1: nothing here hides, replaces or re-checks a face at load or on
|
|
34
|
+
// mutation, so a face that loads inside a closed <details>, tab or accordion renders when opened.
|
|
34
35
|
// Tap-to-expand contributor bios + the in-page certificate modal (progressive enhancement).
|
|
35
36
|
initCertInteractionsOnReady(document);
|
|
36
|
-
// FTC §3 anti-stripping: neutralize a memo whose verbatim disclosure was stripped/hidden/altered
|
|
37
|
-
// (restores the iframe kill switch in the native, in-DOM render). No-op when there's no memo.
|
|
38
|
-
installFtcGuard(document);
|
|
39
37
|
initBadgeRevalidation(document, { verify: createDeliveryVerifier(resolveKid) });
|
|
40
38
|
}
|
|
41
39
|
//# sourceMappingURL=certrev-cert.entry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"certrev-cert.entry.js","sourceRoot":"","sources":["../../src/modal/certrev-cert.entry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,yBAAyB,CAAA,CAAC,qDAAqD;AACtF,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"certrev-cert.entry.js","sourceRoot":"","sources":["../../src/modal/certrev-cert.entry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,yBAAyB,CAAA,CAAC,qDAAqD;AACtF,OAAO,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAA;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AAE3D;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,eAAe,CAAA;AAC9C,MAAM,CAAC,MAAM,0BAA0B,GAAG;;yBAEjB,CAAA;AAEzB,MAAM,UAAU,GAA0B,CAAC,GAAG,EAAE,EAAE,CACjD,GAAG,KAAK,eAAe,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,0BAA0B,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;AAEpF,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;IACrC,4FAA4F;IAC5F,6FAA6F;IAC7F,+DAA+D;IAC/D,iBAAiB,CAAC,QAAQ,CAAC,CAAA;IAC3B,kGAAkG;IAClG,kGAAkG;IAClG,4FAA4F;IAC5F,2BAA2B,CAAC,QAAQ,CAAC,CAAA;IACrC,qBAAqB,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,sBAAsB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;AAChF,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* biome-ignore-all format: generated cert-badge bundle, see @certrev/cert-block src/modal/ */ /* biome-ignore-all lint: generated cert-badge bundle, see @certrev/cert-block src/modal/ */
|
|
2
|
-
"use strict";(()=>{var H="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
|
|
2
|
+
"use strict";(()=>{var H="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Be=(()=>{let e=new Int8Array(128).fill(-1);for(let t=0;t<H.length;t++)e[H.charCodeAt(t)]=t;return e[45]=62,e[95]=63,e})();function g(e){let t=[];for(let i=0;i<e.length;i++){let c=e.charCodeAt(i),d=c<128?Be[c]:-1;d>=0&&t.push(d)}let r=Math.floor(t.length*6/8),n=new Uint8Array(r),o=0,a=0,s=0;for(let i=0;i<t.length;i++)o=o<<6|t[i],a+=6,a>=8&&(a-=8,n[s++]=o>>a&255);return n}function C(e){return g(e)}function p(e,t=new Set){if(typeof e=="number"&&isNaN(e))throw new Error("NaN is not allowed");if(typeof e=="number"&&!isFinite(e))throw new Error("Infinity is not allowed");if(e===null||typeof e!="object")return JSON.stringify(e);if(typeof e.toJSON=="function"){if(t.has(e))throw new Error("Circular reference detected");t.add(e);let n=p(e.toJSON(),t);return t.delete(e),n}if(t.has(e))throw new Error("Circular reference detected");t.add(e);let r;if(Array.isArray(e))r=`[${e.map(o=>p(o===void 0||typeof o=="symbol"?null:o,t)).join(",")}]`;else{let n=[];for(let o of Object.keys(e).sort())e[o]===void 0||typeof e[o]=="symbol"||n.push(`${p(o)}:${p(e[o],t)}`);r=`{${n.join(",")}}`}return t.delete(e),r}var Ie=typeof p=="function"?p:p.default;function K(e){let t=Ie(e);if(typeof t!="string")throw new Error("canonicalize: value is not JSON-serializable");return t}function F(e){return new TextEncoder().encode(K(e))}function b(e,t="$"){if(typeof e=="number"){if(!Number.isInteger(e)||!Number.isSafeInteger(e))throw new Error(`canonicalPayloadBytes: number at ${t} (${e}) is not a safe integer. Signed-payload numbers must be safe integers so PHP/Go/Java verifiers reproduce identical canonical bytes`);return}if(Array.isArray(e)){e.forEach((r,n)=>b(r,`${t}[${n}]`));return}if(e&&typeof e=="object")for(let[r,n]of Object.entries(e))b(n,`${t}.${r}`)}function T(e){return b(e),F(e)}function R(e){return b(e),F(e)}var U="ed25519";var m={name:"Ed25519"};function Oe(e){return e.replace(/-----BEGIN [^-]+-----/g,"").replace(/-----END [^-]+-----/g,"").replace(/\s+/g,"")}async function q(e){switch(e.format){case"pem":return crypto.subtle.importKey("spki",g(Oe(e.pem)),m,!1,["verify"]);case"spki-base64":return crypto.subtle.importKey("spki",g(e.base64),m,!1,["verify"]);case"spki-der":return crypto.subtle.importKey("spki",e.bytes,m,!1,["verify"]);case"raw":{if(e.bytes.length!==32)throw new Error(`ed25519 raw public key must be 32 bytes, got ${e.bytes.length}`);return crypto.subtle.importKey("raw",e.bytes,m,!1,["verify"])}}}function Ne(e){if("format"in e)return!1;let t=e;return typeof t.type=="string"&&typeof t.algorithm=="object"&&Array.isArray(t.usages)}async function j(e){return Ne(e)?e:q(e)}async function G(e,t,r){let n=T(e),o=C(t);try{return await crypto.subtle.verify(m,r,o,n)}catch{return!1}}async function Pe(e,t){let{payload:r,signature:n}=e??{};if(!r||!n||r.contractVersion!==1)return{ok:!1,reason:"unsupported_contract_version"};if(n.alg!==U)return{ok:!1,reason:"unsupported_alg"};let o=await t(n.kid);if(!o)return{ok:!1,reason:"unknown_key"};let a;try{a=await j(o)}catch{return{ok:!1,reason:"unknown_key"}}return await G(r,n.sig,a)?{ok:!0,key:a}:{ok:!1,reason:"invalid_signature"}}function J(e,t){let r=t.now??new Date;if(e.subject.platform!==t.platform)return{decision:"suppress",reason:"platform_mismatch"};if(e.subject.externalId!==t.externalId)return{decision:"suppress",reason:"subject_mismatch"};if(e.lifecycle.revokedAt!==null)return{decision:"suppress",reason:"revoked"};if(r.getTime()>=Date.parse(e.lifecycle.expiresAt))return{decision:"suppress",reason:"expired"};let n=e.subject.contentDigest,o=t.liveContentHash;return n!==null&&o!=null&&n!==o?{decision:"suppress",reason:"content_drift"}:{decision:"render",payload:e}}async function Z(e,t,r){let n;try{n=await Pe(e,t)}catch{return{decision:"suppress",reason:"unknown_key"}}return n.ok?J(e.payload,r):{decision:"suppress",reason:n.reason}}function v(e){return e?.kind==="tombstone"}async function ze(e,t){let{signature:r}=e??{};if(!e?.subject||!r||e.contractVersion!==1)return{ok:!1,reason:"unsupported_contract_version"};if(r.alg!==U)return{ok:!1,reason:"unsupported_alg"};let n=await t(r.kid);if(!n)return{ok:!1,reason:"unknown_key"};let o;try{o=await j(n)}catch{return{ok:!1,reason:"unknown_key"}}let{signature:a,...s}=e,i=C(r.sig),c=!1;try{c=await crypto.subtle.verify(m,o,i,R(s))}catch{c=!1}return c?{ok:!0,key:o}:{ok:!1,reason:"invalid_signature"}}async function W(e,t,r){let n;try{n=await ze(e,t)}catch{return{decision:"suppress",reason:"unknown_key"}}return n.ok?e.subject.platform!==r.platform?{decision:"suppress",reason:"platform_mismatch"}:e.subject.externalId!==r.externalId?{decision:"suppress",reason:"subject_mismatch"}:{decision:"suppress",reason:"revoked"}:{decision:"suppress",reason:n.reason}}async function L(e,t,r){return v(e)?W(e,t,r):Z(e,t,r)}var Y=`
|
|
3
3
|
@font-face {
|
|
4
4
|
font-family: "DM Sans";
|
|
5
5
|
font-style: normal;
|
|
@@ -119,7 +119,7 @@
|
|
|
119
119
|
unicode-range:
|
|
120
120
|
U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
|
121
121
|
}
|
|
122
|
-
`,X="https://assets.certrev.com";function f(e){return typeof e=="string"?e:typeof e=="number"&&Number.isFinite(e)?String(e):""}function l(e){return f(e).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}var
|
|
122
|
+
`,X="https://assets.certrev.com";function f(e){return typeof e=="string"?e:typeof e=="number"&&Number.isFinite(e)?String(e):""}function l(e){return f(e).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}var Ve=["assets.certrev.com","staging-assets.certrev.com"];function He(e){return`width=${e},height=${e},fit=cover,format=auto,onerror=redirect`}function Ke(e,t){let r=(e??"").trim();if(!/^https:\/\//i.test(r))return r;let n;try{n=new URL(r)}catch{return r}if(!Ve.includes(n.hostname)||n.pathname.startsWith("/cdn-cgi/image/"))return r;let o=n.pathname.replace(/^\//,"");return`${n.origin}/cdn-cgi/image/${He(t)}/${o}`}function Q(e,t){return Ke(e,t)}var ee="Independent editorial review of this article\u2019s text and sources. Not a product endorsement, nor medical advice.";var te=ee;function M(e){if(!e||typeof e!="string"&&!(e instanceof Date))return null;let t=e instanceof Date?e:new Date(e);return Number.isNaN(t.getTime())?null:t.toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric",timeZone:"UTC"})}var B=["M67.59 221.77L138.77 292.95C145.8 299.98 145.8 311.44 138.77 318.47L123.02 334.22C116 341.25 104.54 341.25 97.5 334.22L26.32 263.04C19.29 256.01 19.29 244.55 26.32 237.52L42.07 221.77C49.1 214.74 60.56 214.74 67.59 221.77Z","M96.79 335.08L81.12 319.42C73.8 312.1 73.8 300.23 81.12 292.92L315.88 58.16C323.2 50.85 335.06 50.85 342.38 58.16L358.04 73.83C365.36 81.14 365.36 93.01 358.04 100.33L123.29 335.08C115.97 342.4 104.1 342.4 96.79 335.08Z","M203.5 335.14L187.83 319.48C180.52 312.16 180.52 300.29 187.83 292.98L315.88 164.93C323.2 157.62 335.06 157.62 342.38 164.93L358.04 180.6C365.36 187.92 365.36 199.78 358.04 207.1L230 335.14C222.68 342.46 210.82 342.46 203.5 335.14Z","M310.21 335.2L294.54 319.54C287.23 312.22 287.23 300.36 294.54 293.04L315.88 271.71C323.2 264.39 335.06 264.39 342.38 271.71L358.04 287.37C365.36 294.69 365.36 306.55 358.04 313.87L336.71 335.2C329.39 342.52 317.53 342.52 310.21 335.2Z"];function re(e,t){let r=B.map(n=>`<path fill="${t}" d="${n}"/>`).join("");return`<svg width="${e}" height="${e}" viewBox="0 0 375 375" aria-hidden="true" style="display:block;flex-shrink:0">${r}</svg>`}function ne(e=8){return`<svg width="${e}" height="${e}" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20 6 9 17l-5-5"/></svg>`}function oe(e="crm"){let t=`crm-stamp-arc-${e}`,r=B.map(n=>`<path fill="#0a1b3f" d="${n}"/>`).join("");return`<span class="crm-stamp"><svg viewBox="0 0 128 128" width="74" height="74" role="img" aria-label="CertREV verified stamp" style="display:block"><defs><path id="${t}" d="M64 18 A46 46 0 1 1 64 110 A46 46 0 1 1 64 18"/></defs><circle cx="64" cy="64" r="58" fill="none" stroke="#0a1b3f" stroke-width="1.3"/><circle cx="64" cy="64" r="51.5" fill="none" stroke="#0a1b3f" stroke-width="0.7" stroke-opacity="0.4"/><text font-family="'JetBrains Mono',ui-monospace,monospace" font-size="7.8" font-weight="600" letter-spacing="1.3" fill="#0a1b3f"><textPath href="#${t}" startOffset="1%">CERTREV VERIFIED \xB7 CERTIFIED \xB7 </textPath></text><svg x="49" y="50" width="30" height="28" viewBox="0 0 375 375" preserveAspectRatio="xMidYMid meet">${r}</svg></svg></span>`}var I=`
|
|
123
123
|
:host {
|
|
124
124
|
--cr-navy: #0a1b3f;
|
|
125
125
|
--cr-lime: #d4e157;
|
|
@@ -552,6 +552,6 @@
|
|
|
552
552
|
padding: 18px 18px 20px;
|
|
553
553
|
}
|
|
554
554
|
}
|
|
555
|
-
`;var oe="nofollow sponsored noopener noreferrer",je=/^(dr|prof|professor|mr|mrs|ms|mx|rev|sir|dame)\.?\s+/i;function ie(e){let t=f(e).replace(je,"").trim(),r=t.indexOf(",");return(r===-1?t:t.slice(0,r)).trim()}function Je(e){let t=ie(e).split(/\s+/).filter(Boolean);return t.length===0?"":t.length===1?t[0].slice(0,2).toUpperCase():(t[0][0]+t[t.length-1][0]).toUpperCase()}function We(e){return ie(e)}function Ze(e){return f(e).replace(/^https?:\/\//i,"").replace(/\/$/,"")}function ae(e){let t=f(e).trim();return t&&/^https?:\/\//i.test(t)?t:"#"}function Ye(e){return(f(e?.cardLabel)||f(e?.fullName)||f(e?.abbreviation)).trim()}function se(e){let t=[],r=Array.isArray(e?.credentials)?e.credentials:[];for(let n of r){let o=Ye(n);o&&!t.includes(o)&&t.push(o)}return t}function Xe(e,t){return t?.showBio===!1?"":(f(e?.background)||f(e?.bio)).trim()}function ce(e,t,r,n){let o=f(e?.photoUrl).trim();if(n&&/^https?:\/\//i.test(o)){let i=r.includes("--64")?64:56,s=Q(o,i===64?128:112);return`<img class="crm-avatar ${r}" src="${l(s)}" alt="" width="${i}" height="${i}" decoding="async">`}return`<span class="crm-avatar ${r}">${l(Je(t))}</span>`}var le='<button type="button" class="crm-close" data-certrev-modal-close aria-label="Close">×</button>';function fe(e){return`<div class="crm-head">${te(16,"#ffffff")}<span class="crm-head__eyebrow">${l(e)}</span><span class="crm-head__wordmark">CertREV</span></div>`}function de(e){return`<span class="${e}">${re(8)}Certified</span>`}function pe(e){let t=f(e?.compensationCue).trim();return`<div class="crm-disclosure">${t?`<span class="crm-disclosure__cue">${l(t)}</span> `:""}${l(ee)}</div>`}function ue(e){let t=e.expert??null,r=f(t?.displayName).trim();if(!r)return null;let n=e.display?.showExpertPhoto!==!1,o=se(t).join(" \xB7 "),i=M(e.certifiedAt)??"",s=f(e.displayCertId).trim(),a=f(e.articleTitle).trim(),c=f(e.verifyUrl).trim(),d=We(r),h=a?`<div class="crm-certifies"><div class="crm-certifies__eyebrow">Certifies the article</div><div class="crm-certifies__title">${l(a)}</div></div>`:"",x=s?`<div class="crm-meta__col"><div class="crm-meta__label">Certificate ID</div><div class="crm-meta__value crm-meta__value--mono">${l(s)}</div></div>`:"",Be=c?`<div class="crm-sig__url">${l(Ze(c))}</div>`:"";return`${le}${fe("Certificate of Expert Review")}<div class="crm-body--cert"><div class="crm-expert-row">${ce(t,r,"crm-avatar--56",n)}<div class="crm-expert-row__info"><div class="crm-expert-row__eyebrow">Reviewing Expert</div><div class="crm-expert-row__name">${l(r)}</div>${o?`<div class="crm-expert-row__creds">${l(o)}</div>`:""}</div></div>${h}<div class="crm-meta"><div class="crm-meta__col"><div class="crm-meta__label">Issued</div><div class="crm-meta__value">${l(i)}</div></div>${x}<div class="crm-meta__col"><div class="crm-meta__label">Status</div><div class="crm-meta__status">${de("crm-chip")}</div></div></div><div class="crm-sig"><div><div class="crm-sig__name">${l(d)}</div><div class="crm-sig__rule"></div>${Be}</div>${ne("cert")}</div>${pe(t)}<div class="crm-actions"><a class="crm-cta" href="${l(ae(c))}" target="_blank" rel="${oe}">View full certificate</a><button type="button" class="crm-ghost" data-certrev-modal-close>Close</button></div></div>`}function me(e){let t=e.expert??null,r=f(t?.displayName).trim();if(!r)return null;let n=e.display?.showExpertPhoto!==!1,o=se(t),i=Xe(t,e.display),s=M(e.certifiedAt),a=o.length?`<div class="crm-chips">${o.map(h=>`<span class="crm-chips__chip">${l(h)}</span>`).join("")}</div>`:"",c=i?`<p class="crm-bio">${l(i)}</p>`:"",d=s?`Independently reviewed \xB7 Certified ${l(s)}`:"Independently reviewed";return`${le}${fe("Verified reviewer")}<div class="crm-body--expert"><div class="crm-id">${ce(t,r,"crm-avatar--64",n)}<div class="crm-id__info"><div class="crm-id__name">${l(r)}</div></div></div>${a}${c}<div class="crm-trust">${de("crm-trust__chip")}<span class="crm-trust__text">${d}</span></div>${pe(t)}<div class="crm-actions"><a class="crm-cta" href="${l(ae(t?.profileUrl))}" target="_blank" rel="${oe}">View full profile on CertREV</a><button type="button" class="crm-ghost" data-certrev-modal-close>Close</button></div></div>`}var A="certrev-cert-modal",w=null;function Qe(){return typeof CSSStyleSheet<"u"&&"replaceSync"in CSSStyleSheet.prototype&&"adoptedStyleSheets"in Document.prototype}function et(){return Qe()?(w||(w=new CSSStyleSheet,w.replaceSync($)),w):null}var ye=!1;function tt(e){if(ye||(ye=!0,e.querySelector("style[data-certrev-modal-fonts]")))return;if(!e.querySelector("link[data-certrev-modal-preconnect]")){let r=e.createElement("link");r.rel="preconnect",r.href=X,r.crossOrigin="",r.setAttribute("data-certrev-modal-preconnect",""),e.head.appendChild(r)}let t=e.createElement("style");t.textContent=Y,t.setAttribute("data-certrev-modal-fonts",""),e.head.appendChild(t)}var O=class extends HTMLElement{constructor(){super();this.rendered=!1;this.content=null;this.fetchInFlight=null;this.root=this.attachShadow({mode:"open"});let r=et();if(r)this.root.adoptedStyleSheets=[r];else{let n=document.createElement("style");n.textContent=$,this.root.appendChild(n)}this.root.addEventListener("click",n=>this.onShadowClick(n))}open(r){return this.getAttribute("data-fonts")!=="host"&&tt(document),this.ensureRendered()?(this.show(r),!0):this.hasFetchSource()?(this.fetchThenShow(r),!0):!1}ensureRendered(){if(this.rendered)return this.content!=null;let r=this.readSyncContent();return r?(this.content=r,this.renderDialogs(r),this.rendered=!0,!0):!1}readSyncContent(){let r=this.getAttribute("data-envelope");if(r)return ge(r);let n=this.querySelector("script[data-certrev-envelope]");return n?.textContent?ge(n.textContent):null}hasFetchSource(){return!!(this.getAttribute("data-delivery-api")&&this.getAttribute("data-platform")&&this.getAttribute("data-external-id"))}async fetchThenShow(r){if(!this.fetchInFlight){let n=(this.getAttribute("data-delivery-api")||"").replace(/\/$/,""),o=this.getAttribute("data-platform")||"",i=this.getAttribute("data-external-id")||"";this.fetchInFlight=(async()=>{try{let s=await fetch(`${n}/api/cert/v1/delivery/${encodeURIComponent(o)}/${encodeURIComponent(i)}`,{cache:"no-store",credentials:"omit"});if(!s.ok)return;let a=await s.json();if(rt(a)){this.markSuppressed();return}let c=v(a)?void 0:a.payload?.content;c&&(this.content=c,this.renderDialogs(c),this.rendered=!0)}catch{}})()}await this.fetchInFlight,this.rendered&&this.show(r)}renderDialogs(r){let n=ue(r),o=me(r),i=document.createElement("div");i.innerHTML=`${n?`<dialog id="cert" class="crm-dialog crm-dialog--cert" aria-label="CertREV certificate">${n}</dialog>`:""}${o?`<dialog id="expert" class="crm-dialog crm-dialog--expert" aria-label="Verified reviewer profile">${o}</dialog>`:""}`;for(let s of Array.from(i.childNodes))this.root.appendChild(s)}show(r){let n=this.root.getElementById(r);n&&typeof n.showModal=="function"&&!n.open&&n.showModal()}markSuppressed(){this.setAttribute("data-certrev-suppressed","");for(let r of Array.from(document.querySelectorAll("[data-certrev-modal-open]")))r.setAttribute("hidden",""),r.setAttribute("aria-hidden","true")}onShadowClick(r){let n=r.target;if(!n)return;if(n instanceof HTMLDialogElement&&n.classList.contains("crm-dialog")){n.close();return}let o=n.closest("[data-certrev-modal-close]");o&&(r.preventDefault(),o.closest("dialog")?.close())}};function ge(e){try{let t=JSON.parse(e);return t&&typeof t=="object"?t:null}catch{return null}}function rt(e){if(!e)return!1;if(v(e))return!0;let t=e.payload?.lifecycle;return t?!!(t.revokedAt!=null||t.expiresAt&&Date.now()>=new Date(t.expiresAt).getTime()):!1}function nt(){typeof customElements>"u"||customElements.get(A)||customElements.define(A,O)}nt();var ot="[data-ftc-line]",xe=".certrev-memo",ve=".certrev-memo-wrap",it="data-certrev-ftc-neutralized",at="nofollow sponsored noopener noreferrer",he=new WeakSet;function st(e){let t=e.ownerDocument.defaultView;if(!t)return!0;let r=t.getComputedStyle(e);if(r.display==="none"||r.visibility==="hidden"||Number.parseFloat(r.opacity||"1")===0)return!1;let n=e.getBoundingClientRect();return n.width>0&&n.height>0}function ct(e){let t=e.querySelector(ot);return!t||(t.textContent||"").trim()!==U?!1:st(t)}function lt(e){let r=e.ownerDocument.createElement("div");r.setAttribute(it,""),r.style.cssText="font-family:system-ui,-apple-system,sans-serif;font-size:12px;color:#555;padding:12px;line-height:1.4",r.innerHTML=`This CertREV verification cannot be displayed because its required disclosure was not shown. <a href="https://certrev.com" style="color:#555" target="_blank" rel="${at}">Learn more</a>.`,e.replaceWith(r)}function ft(e){let t=Array.from(e.querySelectorAll(xe));if(!t.length)return"unguarded";let r="intact";for(let n of t)ct(n)||(r="tampered",lt(n));return r}function Ce(e){if(he.has(e))return;he.add(e);let t=()=>{ft(e)},r=()=>{t();let n=e.defaultView?.MutationObserver;if(!n)return;let o=Array.from(e.querySelectorAll(ve)),i=Array.from(e.querySelectorAll(xe)).filter(s=>!s.closest(ve));for(let s of[...o,...i])new n(t).observe(s,{childList:!0,subtree:!0,characterData:!0,attributes:!0})};e.readyState==="loading"?e.addEventListener("DOMContentLoaded",r,{once:!0}):r()}var be="data-certrev-acc",_="data-certrev-modal-open",N="data-certrev-initials";var dt=["avatar","certrev-memo__avatar"],Ee=new WeakSet;function Ue(e){let t=e.classList.toggle("open");e.setAttribute("aria-expanded",t?"true":"false")}function we(e){return e==="expert"?"expert":"cert"}function Ae(e,t){let r=e.querySelector(A);return r&&typeof r.open=="function"?r.open(t):!1}function _e(e){return e&&e.closest?e:null}function Se(e){let t=e.getAttribute(N);if(t==null)return;let r=dt.find(o=>e.classList.contains(o));if(!r)return;let n=e.ownerDocument.createElement("span");n.className=`${r} ${r}--initials`,n.setAttribute("aria-hidden","true"),n.textContent=t,e.replaceWith(n)}function pt(e){for(let t of Array.from(e.querySelectorAll(`img[${N}]`)))t.complete&&t.naturalWidth===0&&Se(t)}function ut(e){Ee.has(e)||(Ee.add(e),e.addEventListener("click",t=>{let r=_e(t.target);if(!r)return;let n=r.closest(`[${_}]`);if(n){Ae(e,we(n.getAttribute(_)))&&t.preventDefault();return}let o=r.closest(`[${be}]`);o&&!r.closest("a, button")&&Ue(o)}),e.addEventListener("error",t=>{let r=t.target;r&&r.tagName==="IMG"&&r.hasAttribute(N)&&Se(r)},!0),pt(e),e.addEventListener("keydown",t=>{if(t.key!=="Enter"&&t.key!==" "&&t.key!=="Spacebar")return;let r=_e(t.target);if(!r||r.closest("a, button"))return;let n=r.closest(`[${_}]`);if(n&&Ae(e,we(n.getAttribute(_)))){t.preventDefault();return}let o=r.closest(`[${be}]`);o&&(t.preventDefault(),Ue(o))}))}function De(e){let t=()=>ut(e);e.readyState==="loading"?e.addEventListener("DOMContentLoaded",t,{once:!0}):t()}var mt=[{selector:"main article",tier:"article"},{selector:"article",tier:"article"},{selector:"main",tier:"main"},{selector:".article-template__content",tier:"theme-class"},{selector:'[id^="ArticleContent"]',tier:"theme-class"},{selector:".rte",tier:"theme-class"}],y=[{selector:".article-template__content",tier:"theme-class"},{selector:'[id^="ArticleContent"]',tier:"theme-class"},{selector:".rte",tier:"theme-class"},{selector:"main article",tier:"article"},{selector:"article",tier:"article"},{selector:"main",tier:"main"}],P=y.map(e=>e.selector).join(", "),yt='header, [role="banner"], [class*="announcement"], footer, [role="contentinfo"], nav, [role="navigation"], cart-drawer, .cart-drawer, .drawer, .mini-cart, .modal, [role="dialog"]',u="data-certrev-placement",Te="data-certrev-anchor",gt='script[type="application/ld+json"][data-certrev-graph]',vt=".certrev-card-wrap",Re=".certrev-memo-wrap",ht=".certrev-pill-wrap",ke=384,xt=24,S="#references";function D(e){for(let t=e;t;t=t.parentElement){if(t.hasAttribute("hidden")||t.getAttribute("aria-hidden")==="true")return!1;let r=getComputedStyle(t);if(r.display==="none"||r.visibility==="hidden")return!1}return!0}function z(e){return e.closest(yt)!==null}function Fe(e,t){for(let{selector:r,tier:n}of t)if(e.matches(r))return n;return"article"}function F(e,t,r){for(let{selector:n,tier:o}of r)for(let i of Array.from(e.querySelectorAll(n)))if(i!==t&&!i.contains(t)&&!t.contains(i)&&D(i)&&!z(i))return{el:i,tier:o};return null}function V(e,t){let r=t.getAttribute(u);if(r)return{anchored:r!=="body-fallback",tier:r};let n=t.getAttribute(Te);if(n==="rail"){let a=e.querySelector(S)?.closest(P)??F(e,t,y)?.el??null,c=e.defaultView;if(a&&c&&D(a)&&!z(a)){let d=a.getBoundingClientRect();if(c.innerWidth-d.right>=ke)return t.style.setProperty("--certrev-rail-left",`${Math.round(d.right+xt)}px`),t.setAttribute(u,"rail"),{anchored:!0,tier:"rail"};a.insertAdjacentElement("afterbegin",t);let x=Fe(a,y);return t.setAttribute(u,x),{anchored:!0,tier:x}}return t.setAttribute(u,"body-fallback"),{anchored:!1,tier:"body-fallback"}}let o=n==="bottom"?"bottom":"top",i="body-fallback";if(o==="top"){let a=e.querySelector(S)?.closest(P)??null;if(a&&a!==t&&!a.contains(t)&&!t.contains(a)&&D(a)&&!z(a))a.insertAdjacentElement("afterbegin",t),i=Fe(a,y);else{let c=F(e,t,y);c&&(c.el.insertAdjacentElement("afterbegin",t),i=c.tier)}}else{let s=e.querySelector(S);if(s&&s!==t&&!t.contains(s)&&!s.contains(t)&&D(s))s.insertAdjacentElement("beforebegin",t),i="references";else{let a=F(e,t,mt);a&&(a.el.insertAdjacentElement("afterend",t),i=a.tier)}}return t.setAttribute(u,i),{anchored:i!=="body-fallback",tier:i}}function Ct(e){let t=e.querySelector(gt),r=!1;t&&t.parentNode!==e.head&&(e.head.appendChild(t),r=!0);let n=e.querySelector(vt),o=e.querySelector(Re);return e.querySelector(ht)?.setAttribute(u,"pill-fixed"),{graph:r,card:n?V(e,n):null,memo:o?V(e,o):null}}function bt(e){let t=e.defaultView;if(!t)return;let r=e.querySelector(`${Re}[${Te}="rail"]`);if(!r||r.getAttribute(u)!=="rail")return;let n,o=()=>{n&&clearTimeout(n),n=setTimeout(()=>{if(r.getAttribute(u)!=="rail"){t.removeEventListener("resize",o);return}let s=e.querySelector(S)?.closest(P)??F(e,r,y)?.el??null;(s?t.innerWidth-s.getBoundingClientRect().right:0)<ke&&(r.style.removeProperty("--certrev-rail-left"),r.removeAttribute(u),V(e,r),t.removeEventListener("resize",o))},150)};t.addEventListener("resize",o)}function Le(e){let t=()=>{Ct(e),bt(e)};e.readyState==="loading"?e.addEventListener("DOMContentLoaded",t,{once:!0}):t()}async function Et(e,t){let r=e.querySelector(".certrev-badge");if(!r)return;let n=e.getAttribute("data-delivery-api"),o=e.getAttribute("data-external-id"),i=e.getAttribute("data-platform")??"shopify";if(!n||!o)return;let s;try{s=await t.verify({baseUrl:n,platform:i,externalId:o})}catch{return}s.decision!=="render"&&(r.setAttribute("hidden",""),r.setAttribute("data-certrev-suppressed",s.reason))}function Ie(e,t){let r=()=>{for(let n of Array.from(e.querySelectorAll("certrev-badge[revalidate]")))Et(n,t)};e.readyState==="loading"?e.addEventListener("DOMContentLoaded",r,{once:!0}):r()}function Me(e,t=fetch){return async r=>{let o=`${r.baseUrl.replace(/\/+$/,"")}/api/cert/v1/delivery/${encodeURIComponent(r.platform)}/${encodeURIComponent(r.externalId)}`,i=await t(o,{headers:{accept:"application/json"}});if(!i.ok)throw new Error(`cert delivery ${i.status}`);let s=await i.json();return I(s,e,{platform:r.platform,externalId:r.externalId,liveContentHash:null,now:new Date})}}var Ut="cert-issuer-1",wt=`-----BEGIN PUBLIC KEY-----
|
|
555
|
+
`;var ae="nofollow sponsored noopener noreferrer",qe=/^(dr|prof|professor|mr|mrs|ms|mx|rev|sir|dame)\.?\s+/i;function ie(e){let t=f(e).replace(qe,"").trim(),r=t.indexOf(",");return(r===-1?t:t.slice(0,r)).trim()}function je(e){let t=ie(e).split(/\s+/).filter(Boolean);return t.length===0?"":t.length===1?t[0].slice(0,2).toUpperCase():(t[0][0]+t[t.length-1][0]).toUpperCase()}function Ge(e){return ie(e)}function Je(e){return f(e).replace(/^https?:\/\//i,"").replace(/\/$/,"")}function se(e){let t=f(e).trim();return t&&/^https?:\/\//i.test(t)?t:"#"}function Ze(e){return(f(e?.cardLabel)||f(e?.fullName)||f(e?.abbreviation)).trim()}function ce(e){let t=[],r=Array.isArray(e?.credentials)?e.credentials:[];for(let n of r){let o=Ze(n);o&&!t.includes(o)&&t.push(o)}return t}function We(e,t){return t?.showBio===!1?"":(f(e?.background)||f(e?.bio)).trim()}function le(e,t,r,n){let o=f(e?.photoUrl).trim();if(n&&/^https?:\/\//i.test(o)){let a=r.includes("--64")?64:56,s=Q(o,a===64?128:112);return`<img class="crm-avatar ${r}" src="${l(s)}" alt="" width="${a}" height="${a}" decoding="async">`}return`<span class="crm-avatar ${r}">${l(je(t))}</span>`}var fe='<button type="button" class="crm-close" data-certrev-modal-close aria-label="Close">×</button>';function de(e){return`<div class="crm-head">${re(16,"#ffffff")}<span class="crm-head__eyebrow">${l(e)}</span><span class="crm-head__wordmark">CertREV</span></div>`}function pe(e){return`<span class="${e}">${ne(8)}Certified</span>`}function ue(e){let t=f(e?.compensationCue).trim();return`<div class="crm-disclosure">${t?`<span class="crm-disclosure__cue">${l(t)}</span> `:""}${l(te)}</div>`}function me(e){let t=e.expert??null,r=f(t?.displayName).trim();if(!r)return null;let n=e.display?.showExpertPhoto!==!1,o=ce(t).join(" \xB7 "),a=M(e.certifiedAt)??"",s=f(e.displayCertId).trim(),i=f(e.articleTitle).trim(),c=f(e.verifyUrl).trim(),d=Ge(r),h=i?`<div class="crm-certifies"><div class="crm-certifies__eyebrow">Certifies the article</div><div class="crm-certifies__title">${l(i)}</div></div>`:"",x=s?`<div class="crm-meta__col"><div class="crm-meta__label">Certificate ID</div><div class="crm-meta__value crm-meta__value--mono">${l(s)}</div></div>`:"",Me=c?`<div class="crm-sig__url">${l(Je(c))}</div>`:"";return`${fe}${de("Certificate of Expert Review")}<div class="crm-body--cert"><div class="crm-expert-row">${le(t,r,"crm-avatar--56",n)}<div class="crm-expert-row__info"><div class="crm-expert-row__eyebrow">Reviewing Expert</div><div class="crm-expert-row__name">${l(r)}</div>${o?`<div class="crm-expert-row__creds">${l(o)}</div>`:""}</div></div>${h}<div class="crm-meta"><div class="crm-meta__col"><div class="crm-meta__label">Issued</div><div class="crm-meta__value">${l(a)}</div></div>${x}<div class="crm-meta__col"><div class="crm-meta__label">Status</div><div class="crm-meta__status">${pe("crm-chip")}</div></div></div><div class="crm-sig"><div><div class="crm-sig__name">${l(d)}</div><div class="crm-sig__rule"></div>${Me}</div>${oe("cert")}</div>${ue(t)}<div class="crm-actions"><a class="crm-cta" href="${l(se(c))}" target="_blank" rel="${ae}">View full certificate</a><button type="button" class="crm-ghost" data-certrev-modal-close>Close</button></div></div>`}function ye(e){let t=e.expert??null,r=f(t?.displayName).trim();if(!r)return null;let n=e.display?.showExpertPhoto!==!1,o=ce(t),a=We(t,e.display),s=M(e.certifiedAt),i=o.length?`<div class="crm-chips">${o.map(h=>`<span class="crm-chips__chip">${l(h)}</span>`).join("")}</div>`:"",c=a?`<p class="crm-bio">${l(a)}</p>`:"",d=s?`Independently reviewed \xB7 Certified ${l(s)}`:"Independently reviewed";return`${fe}${de("Verified reviewer")}<div class="crm-body--expert"><div class="crm-id">${le(t,r,"crm-avatar--64",n)}<div class="crm-id__info"><div class="crm-id__name">${l(r)}</div></div></div>${i}${c}<div class="crm-trust">${pe("crm-trust__chip")}<span class="crm-trust__text">${d}</span></div>${ue(t)}<div class="crm-actions"><a class="crm-cta" href="${l(se(t?.profileUrl))}" target="_blank" rel="${ae}">View full profile on CertREV</a><button type="button" class="crm-ghost" data-certrev-modal-close>Close</button></div></div>`}var w="certrev-cert-modal",ge="[data-certrev-cert]";function O(e){let t=e.closest(ge);for(let r=e;r;r=r.parentElement){let n=Array.from(r.querySelectorAll(w)).filter(o=>o.closest(ge)===t);if(n.length===1)return{modal:n[0],reason:null};if(n.length>1)return{modal:null,reason:"ambiguous",count:n.length};if(r===t)break}return{modal:null,reason:"none",count:0}}var E=null;function Ye(){return typeof CSSStyleSheet<"u"&&"replaceSync"in CSSStyleSheet.prototype&&"adoptedStyleSheets"in Document.prototype}function Xe(){return Ye()?(E||(E=new CSSStyleSheet,E.replaceSync(I)),E):null}var ve=!1;function Qe(e){if(ve||(ve=!0,e.querySelector("style[data-certrev-modal-fonts]")))return;if(!e.querySelector("link[data-certrev-modal-preconnect]")){let r=e.createElement("link");r.rel="preconnect",r.href=X,r.crossOrigin="",r.setAttribute("data-certrev-modal-preconnect",""),e.head.appendChild(r)}let t=e.createElement("style");t.textContent=Y,t.setAttribute("data-certrev-modal-fonts",""),e.head.appendChild(t)}var $=class extends HTMLElement{constructor(){super();this.rendered=!1;this.content=null;this.fetchInFlight=null;this.root=this.attachShadow({mode:"open"});let r=Xe();if(r)this.root.adoptedStyleSheets=[r];else{let n=document.createElement("style");n.textContent=I,this.root.appendChild(n)}this.root.addEventListener("click",n=>this.onShadowClick(n))}open(r){return this.getAttribute("data-fonts")!=="host"&&Qe(document),this.ensureRendered()?(this.show(r),!0):this.hasFetchSource()?(this.fetchThenShow(r),!0):!1}ensureRendered(){if(this.rendered)return this.content!=null;let r=this.readSyncContent();return r?(this.content=r,this.renderDialogs(r),this.rendered=!0,!0):!1}readSyncContent(){let r=this.getAttribute("data-envelope");if(r)return he(r);let n=this.querySelector("script[data-certrev-envelope]");return n?.textContent?he(n.textContent):null}hasFetchSource(){return!!(this.getAttribute("data-delivery-api")&&this.getAttribute("data-platform")&&this.getAttribute("data-external-id"))}async fetchThenShow(r){if(!this.fetchInFlight){let n=(this.getAttribute("data-delivery-api")||"").replace(/\/$/,""),o=this.getAttribute("data-platform")||"",a=this.getAttribute("data-external-id")||"";this.fetchInFlight=(async()=>{try{let s=await fetch(`${n}/api/cert/v1/delivery/${encodeURIComponent(o)}/${encodeURIComponent(a)}`,{cache:"no-store",credentials:"omit"});if(!s.ok)return;let i=await s.json();if(et(i)){this.markSuppressed();return}let c=v(i)?void 0:i.payload?.content;c&&(this.content=c,this.renderDialogs(c),this.rendered=!0)}catch{}})()}await this.fetchInFlight,this.rendered&&this.show(r)}renderDialogs(r){let n=me(r),o=ye(r),a=document.createElement("div");a.innerHTML=`${n?`<dialog id="cert" class="crm-dialog crm-dialog--cert" aria-label="CertREV certificate">${n}</dialog>`:""}${o?`<dialog id="expert" class="crm-dialog crm-dialog--expert" aria-label="Verified reviewer profile">${o}</dialog>`:""}`;for(let s of Array.from(a.childNodes))this.root.appendChild(s)}show(r){let n=this.root.getElementById(r);n&&typeof n.showModal=="function"&&!n.open&&n.showModal()}markSuppressed(){this.setAttribute("data-certrev-suppressed","");for(let r of Array.from(this.ownerDocument.querySelectorAll("[data-certrev-modal-open]")))O(r).modal===this&&(r.setAttribute("hidden",""),r.setAttribute("aria-hidden","true"))}onShadowClick(r){let n=r.target;if(!n)return;if(n instanceof HTMLDialogElement&&n.classList.contains("crm-dialog")){n.close();return}let o=n.closest("[data-certrev-modal-close]");o&&(r.preventDefault(),o.closest("dialog")?.close())}};function he(e){try{let t=JSON.parse(e);return t&&typeof t=="object"?t:null}catch{return null}}function et(e){if(!e)return!1;if(v(e))return!0;let t=e.payload?.lifecycle;return t?!!(t.revokedAt!=null||t.expiresAt&&Date.now()>=new Date(t.expiresAt).getTime()):!1}function tt(){typeof customElements>"u"||customElements.get(w)||customElements.define(w,$)}tt();var xe="data-certrev-acc",A="data-certrev-modal-open",N="data-certrev-initials";var rt="data-certrev-modal-unresolved",nt="certrev:modal-unresolved",ot=["avatar","certrev-memo__avatar"],Ce=new WeakSet;function be(e){let t=e.classList.toggle("open");e.setAttribute("aria-expanded",t?"true":"false")}function Ue(e){return e==="expert"?"expert":"cert"}function Ee(e,t){let r=O(e);if(r.modal){let n=r.modal;return typeof n.open=="function"?n.open(t):!1}return r.reason==="ambiguous"&&(e.setAttribute(rt,r.reason),e.dispatchEvent(new CustomEvent(nt,{bubbles:!0,detail:{reason:r.reason,modals:r.count}}))),!1}function we(e){return e&&e.closest?e:null}function Ae(e){let t=e.getAttribute(N);if(t==null)return;let r=ot.find(o=>e.classList.contains(o));if(!r)return;let n=e.ownerDocument.createElement("span");n.className=`${r} ${r}--initials`,n.setAttribute("aria-hidden","true"),n.textContent=t,e.replaceWith(n)}function at(e){for(let t of Array.from(e.querySelectorAll(`img[${N}]`)))t.complete&&t.naturalWidth===0&&Ae(t)}function it(e){Ce.has(e)||(Ce.add(e),e.addEventListener("click",t=>{let r=we(t.target);if(!r)return;let n=r.closest(`[${A}]`);if(n){Ee(n,Ue(n.getAttribute(A)))&&t.preventDefault();return}let o=r.closest(`[${xe}]`);o&&!r.closest("a, button")&&be(o)}),e.addEventListener("error",t=>{let r=t.target;r&&r.tagName==="IMG"&&r.hasAttribute(N)&&Ae(r)},!0),at(e),e.addEventListener("keydown",t=>{if(t.key!=="Enter"&&t.key!==" "&&t.key!=="Spacebar")return;let r=we(t.target);if(!r||r.closest("a, button"))return;let n=r.closest(`[${A}]`);if(n&&Ee(n,Ue(n.getAttribute(A)))){t.preventDefault();return}let o=r.closest(`[${xe}]`);o&&(t.preventDefault(),be(o))}))}function _e(e){let t=()=>it(e);e.readyState==="loading"?e.addEventListener("DOMContentLoaded",t,{once:!0}):t()}var st=[{selector:"main article",tier:"article"},{selector:"article",tier:"article"},{selector:"main",tier:"main"},{selector:".article-template__content",tier:"theme-class"},{selector:'[id^="ArticleContent"]',tier:"theme-class"},{selector:".rte",tier:"theme-class"}],y=[{selector:".article-template__content",tier:"theme-class"},{selector:'[id^="ArticleContent"]',tier:"theme-class"},{selector:".rte",tier:"theme-class"},{selector:"main article",tier:"article"},{selector:"article",tier:"article"},{selector:"main",tier:"main"}],P=y.map(e=>e.selector).join(", "),ct='header, [role="banner"], [class*="announcement"], footer, [role="contentinfo"], nav, [role="navigation"], cart-drawer, .cart-drawer, .drawer, .mini-cart, .modal, [role="dialog"]',u="data-certrev-placement",De="data-certrev-anchor",lt='script[type="application/ld+json"][data-certrev-graph]',ft=".certrev-card-wrap",Fe=".certrev-memo-wrap",dt=".certrev-pill-wrap",Te=384,pt=24,_="#references";function S(e){for(let t=e;t;t=t.parentElement){if(t.hasAttribute("hidden")||t.getAttribute("aria-hidden")==="true")return!1;let r=getComputedStyle(t);if(r.display==="none"||r.visibility==="hidden")return!1}return!0}function z(e){return e.closest(ct)!==null}function Se(e,t){for(let{selector:r,tier:n}of t)if(e.matches(r))return n;return"article"}function D(e,t,r){for(let{selector:n,tier:o}of r)for(let a of Array.from(e.querySelectorAll(n)))if(a!==t&&!a.contains(t)&&!t.contains(a)&&S(a)&&!z(a))return{el:a,tier:o};return null}function V(e,t){let r=t.getAttribute(u);if(r)return{anchored:r!=="body-fallback",tier:r};let n=t.getAttribute(De);if(n==="rail"){let i=e.querySelector(_)?.closest(P)??D(e,t,y)?.el??null,c=e.defaultView;if(i&&c&&S(i)&&!z(i)){let d=i.getBoundingClientRect();if(c.innerWidth-d.right>=Te)return t.style.setProperty("--certrev-rail-left",`${Math.round(d.right+pt)}px`),t.setAttribute(u,"rail"),{anchored:!0,tier:"rail"};i.insertAdjacentElement("afterbegin",t);let x=Se(i,y);return t.setAttribute(u,x),{anchored:!0,tier:x}}return t.setAttribute(u,"body-fallback"),{anchored:!1,tier:"body-fallback"}}let o=n==="bottom"?"bottom":"top",a="body-fallback";if(o==="top"){let i=e.querySelector(_)?.closest(P)??null;if(i&&i!==t&&!i.contains(t)&&!t.contains(i)&&S(i)&&!z(i))i.insertAdjacentElement("afterbegin",t),a=Se(i,y);else{let c=D(e,t,y);c&&(c.el.insertAdjacentElement("afterbegin",t),a=c.tier)}}else{let s=e.querySelector(_);if(s&&s!==t&&!t.contains(s)&&!s.contains(t)&&S(s))s.insertAdjacentElement("beforebegin",t),a="references";else{let i=D(e,t,st);i&&(i.el.insertAdjacentElement("afterend",t),a=i.tier)}}return t.setAttribute(u,a),{anchored:a!=="body-fallback",tier:a}}function ut(e){let t=e.querySelector(lt),r=!1;t&&t.parentNode!==e.head&&(e.head.appendChild(t),r=!0);let n=e.querySelector(ft),o=e.querySelector(Fe);return e.querySelector(dt)?.setAttribute(u,"pill-fixed"),{graph:r,card:n?V(e,n):null,memo:o?V(e,o):null}}function mt(e){let t=e.defaultView;if(!t)return;let r=e.querySelector(`${Fe}[${De}="rail"]`);if(!r||r.getAttribute(u)!=="rail")return;let n,o=()=>{n&&clearTimeout(n),n=setTimeout(()=>{if(r.getAttribute(u)!=="rail"){t.removeEventListener("resize",o);return}let s=e.querySelector(_)?.closest(P)??D(e,r,y)?.el??null;(s?t.innerWidth-s.getBoundingClientRect().right:0)<Te&&(r.style.removeProperty("--certrev-rail-left"),r.removeAttribute(u),V(e,r),t.removeEventListener("resize",o))},150)};t.addEventListener("resize",o)}function Re(e){let t=()=>{ut(e),mt(e)};e.readyState==="loading"?e.addEventListener("DOMContentLoaded",t,{once:!0}):t()}async function yt(e,t){let r=e.querySelector(".certrev-badge");if(!r)return;let n=e.getAttribute("data-delivery-api"),o=e.getAttribute("data-external-id"),a=e.getAttribute("data-platform")??"shopify";if(!n||!o)return;let s;try{s=await t.verify({baseUrl:n,platform:a,externalId:o})}catch{return}s.decision!=="render"&&(r.setAttribute("hidden",""),r.setAttribute("data-certrev-suppressed",s.reason))}function ke(e,t){let r=()=>{for(let n of Array.from(e.querySelectorAll("certrev-badge[revalidate]")))yt(n,t)};e.readyState==="loading"?e.addEventListener("DOMContentLoaded",r,{once:!0}):r()}function Le(e,t=fetch){return async r=>{let o=`${r.baseUrl.replace(/\/+$/,"")}/api/cert/v1/delivery/${encodeURIComponent(r.platform)}/${encodeURIComponent(r.externalId)}`,a=await t(o,{headers:{accept:"application/json"}});if(!a.ok)throw new Error(`cert delivery ${a.status}`);let s=await a.json();return L(s,e,{platform:r.platform,externalId:r.externalId,liveContentHash:null,now:new Date})}}var gt="cert-issuer-1",vt=`-----BEGIN PUBLIC KEY-----
|
|
556
556
|
MCowBQYDK2VwAyEAMWN956IOPjpAq900dL428VzA28TO/pVXnq3brwqUmwM=
|
|
557
|
-
-----END PUBLIC KEY-----`,
|
|
557
|
+
-----END PUBLIC KEY-----`,ht=e=>e===gt?{format:"pem",pem:vt}:null;typeof document<"u"&&(Re(document),_e(document),ke(document,{verify:Le(ht)}));})();
|