@focus-reactive/payload-plugin-seo 1.0.1 → 1.0.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/engine/visualization/gaugeSpecs.js +2 -2
- package/dist/engine/visualization/gaugeSpecs.js.map +1 -1
- package/dist/ui/CheckRow/CheckVisualization/visualizations/DensityGauge.d.ts.map +1 -1
- package/dist/ui/CheckRow/CheckVisualization/visualizations/DensityGauge.js +3 -1
- package/dist/ui/CheckRow/CheckVisualization/visualizations/DensityGauge.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/engine/visualization/gaugeSpecs.ts"],"sourcesContent":["import type { CheckId } from \"../../constants/checkIds\";\nimport type { GaugeSpec } from \"../types/visualization\";\n\nexport const GAUGE_SPECS: Partial<Record<CheckId, GaugeSpec>> = {\n keyphraseLength: {\n statusSource: \"yoast\",\n axisMin: 0,\n axisMax: 12,\n thresholds: [4, 8],\n scores: [9, 6, 3],\n unit: \"words\",\n },\n keyphraseDensity: {\n statusSource: \"yoast\",\n axisMin: 0,\n axisMax: 5,\n thresholds: [0.5, 3],\n scores: [4, 9, -10],\n unit: \"percent\",\n },\n metaDescriptionLength: {\n statusSource: \"yoast\",\n axisMin: 0,\n axisMax: 180,\n thresholds: [120, 156],\n scores: [6, 9, 6],\n unit: \"chars\",\n },\n titleWidth: {\n statusSource: \"yoast\",\n axisMin: 0,\n axisMax: 700,\n thresholds: [400, 600],\n scores: [6, 9, 3],\n unit: \"px\",\n },\n textLength: {\n statusSource: \"yoast\",\n axisMin: 0,\n axisMax: 350,\n thresholds: [250, 300],\n scores: [3, 6, 9],\n unit: \"words\",\n },\n fleschReadingEase: {\n statusSource: \"direct\",\n axisMin: 0,\n axisMax: 100,\n thresholds: [50, 60],\n statuses: [\"bad\", \"warn\", \"good\"],\n unit: \"score\",\n },\n textSentenceLength: {\n statusSource: \"direct\",\n axisMin: 0,\n axisMax: 50,\n thresholds: [25, 30],\n statuses: [\"good\", \"warn\", \"bad\"],\n unit: \"percent\",\n },\n passiveVoice: {\n statusSource: \"direct\",\n axisMin: 0,\n axisMax: 50,\n thresholds: [10, 15],\n statuses: [\"good\", \"warn\", \"bad\"],\n unit: \"percent\",\n },\n textTransitionWords: {\n statusSource: \"direct\",\n axisMin: 0,\n axisMax: 50,\n thresholds: [20, 30],\n statuses: [\"bad\", \"warn\", \"good\"],\n unit: \"percent\",\n },\n};\n"],"mappings":"AAGO,MAAM,cAAmD;AAAA,EAC9D,iBAAiB;AAAA,IACf,cAAc;AAAA,IACd,SAAS;AAAA,IACT,SAAS;AAAA,IACT,YAAY,CAAC,GAAG,CAAC;AAAA,IACjB,QAAQ,CAAC,GAAG,GAAG,CAAC;AAAA,IAChB,MAAM;AAAA,EACR;AAAA,EACA,kBAAkB;AAAA,IAChB,cAAc;AAAA,IACd,SAAS;AAAA,IACT,SAAS;AAAA,IACT,YAAY,CAAC,KAAK,CAAC;AAAA,IACnB,QAAQ,CAAC,GAAG,GAAG,GAAG;AAAA,IAClB,MAAM;AAAA,EACR;AAAA,EACA,uBAAuB;AAAA,IACrB,cAAc;AAAA,IACd,SAAS;AAAA,IACT,SAAS;AAAA,IACT,YAAY,CAAC,KAAK,GAAG;AAAA,
|
|
1
|
+
{"version":3,"sources":["../../../src/engine/visualization/gaugeSpecs.ts"],"sourcesContent":["import type { CheckId } from \"../../constants/checkIds\";\nimport type { GaugeSpec } from \"../types/visualization\";\n\nexport const GAUGE_SPECS: Partial<Record<CheckId, GaugeSpec>> = {\n keyphraseLength: {\n statusSource: \"yoast\",\n axisMin: 0,\n axisMax: 12,\n thresholds: [4, 8],\n scores: [9, 6, 3],\n unit: \"words\",\n },\n keyphraseDensity: {\n statusSource: \"yoast\",\n axisMin: 0,\n axisMax: 5,\n thresholds: [0.5, 3],\n scores: [4, 9, -10],\n unit: \"percent\",\n },\n metaDescriptionLength: {\n statusSource: \"yoast\",\n axisMin: 0,\n axisMax: 180,\n thresholds: [0, 120, 156],\n scores: [3, 6, 9, 6],\n unit: \"chars\",\n },\n titleWidth: {\n statusSource: \"yoast\",\n axisMin: 0,\n axisMax: 700,\n thresholds: [400, 600],\n scores: [6, 9, 3],\n unit: \"px\",\n },\n textLength: {\n statusSource: \"yoast\",\n axisMin: 0,\n axisMax: 350,\n thresholds: [250, 300],\n scores: [3, 6, 9],\n unit: \"words\",\n },\n fleschReadingEase: {\n statusSource: \"direct\",\n axisMin: 0,\n axisMax: 100,\n thresholds: [50, 60],\n statuses: [\"bad\", \"warn\", \"good\"],\n unit: \"score\",\n },\n textSentenceLength: {\n statusSource: \"direct\",\n axisMin: 0,\n axisMax: 50,\n thresholds: [25, 30],\n statuses: [\"good\", \"warn\", \"bad\"],\n unit: \"percent\",\n },\n passiveVoice: {\n statusSource: \"direct\",\n axisMin: 0,\n axisMax: 50,\n thresholds: [10, 15],\n statuses: [\"good\", \"warn\", \"bad\"],\n unit: \"percent\",\n },\n textTransitionWords: {\n statusSource: \"direct\",\n axisMin: 0,\n axisMax: 50,\n thresholds: [20, 30],\n statuses: [\"bad\", \"warn\", \"good\"],\n unit: \"percent\",\n },\n};\n"],"mappings":"AAGO,MAAM,cAAmD;AAAA,EAC9D,iBAAiB;AAAA,IACf,cAAc;AAAA,IACd,SAAS;AAAA,IACT,SAAS;AAAA,IACT,YAAY,CAAC,GAAG,CAAC;AAAA,IACjB,QAAQ,CAAC,GAAG,GAAG,CAAC;AAAA,IAChB,MAAM;AAAA,EACR;AAAA,EACA,kBAAkB;AAAA,IAChB,cAAc;AAAA,IACd,SAAS;AAAA,IACT,SAAS;AAAA,IACT,YAAY,CAAC,KAAK,CAAC;AAAA,IACnB,QAAQ,CAAC,GAAG,GAAG,GAAG;AAAA,IAClB,MAAM;AAAA,EACR;AAAA,EACA,uBAAuB;AAAA,IACrB,cAAc;AAAA,IACd,SAAS;AAAA,IACT,SAAS;AAAA,IACT,YAAY,CAAC,GAAG,KAAK,GAAG;AAAA,IACxB,QAAQ,CAAC,GAAG,GAAG,GAAG,CAAC;AAAA,IACnB,MAAM;AAAA,EACR;AAAA,EACA,YAAY;AAAA,IACV,cAAc;AAAA,IACd,SAAS;AAAA,IACT,SAAS;AAAA,IACT,YAAY,CAAC,KAAK,GAAG;AAAA,IACrB,QAAQ,CAAC,GAAG,GAAG,CAAC;AAAA,IAChB,MAAM;AAAA,EACR;AAAA,EACA,YAAY;AAAA,IACV,cAAc;AAAA,IACd,SAAS;AAAA,IACT,SAAS;AAAA,IACT,YAAY,CAAC,KAAK,GAAG;AAAA,IACrB,QAAQ,CAAC,GAAG,GAAG,CAAC;AAAA,IAChB,MAAM;AAAA,EACR;AAAA,EACA,mBAAmB;AAAA,IACjB,cAAc;AAAA,IACd,SAAS;AAAA,IACT,SAAS;AAAA,IACT,YAAY,CAAC,IAAI,EAAE;AAAA,IACnB,UAAU,CAAC,OAAO,QAAQ,MAAM;AAAA,IAChC,MAAM;AAAA,EACR;AAAA,EACA,oBAAoB;AAAA,IAClB,cAAc;AAAA,IACd,SAAS;AAAA,IACT,SAAS;AAAA,IACT,YAAY,CAAC,IAAI,EAAE;AAAA,IACnB,UAAU,CAAC,QAAQ,QAAQ,KAAK;AAAA,IAChC,MAAM;AAAA,EACR;AAAA,EACA,cAAc;AAAA,IACZ,cAAc;AAAA,IACd,SAAS;AAAA,IACT,SAAS;AAAA,IACT,YAAY,CAAC,IAAI,EAAE;AAAA,IACnB,UAAU,CAAC,QAAQ,QAAQ,KAAK;AAAA,IAChC,MAAM;AAAA,EACR;AAAA,EACA,qBAAqB;AAAA,IACnB,cAAc;AAAA,IACd,SAAS;AAAA,IACT,SAAS;AAAA,IACT,YAAY,CAAC,IAAI,EAAE;AAAA,IACnB,UAAU,CAAC,OAAO,QAAQ,MAAM;AAAA,IAChC,MAAM;AAAA,EACR;AACF;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DensityGauge.d.ts","sourceRoot":"","sources":["../../../../../src/ui/CheckRow/CheckVisualization/visualizations/DensityGauge.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AAEzE,wBAAgB,YAAY,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"DensityGauge.d.ts","sourceRoot":"","sources":["../../../../../src/ui/CheckRow/CheckVisualization/visualizations/DensityGauge.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AAEzE,wBAAgB,YAAY,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,UAAU,2CAoE/F"}
|
|
@@ -10,6 +10,8 @@ function DensityGauge({ bands, markerPct, markerLabel, markerStatus, labels }) {
|
|
|
10
10
|
const markerPx = markerPct / 100 * dims.bar;
|
|
11
11
|
const halfLabel = dims.label / 2;
|
|
12
12
|
const labelAlign = dims.label === 0 ? "-translate-x-1/2" : markerPx < halfLabel ? "translate-x-0" : markerPx > dims.bar - halfLabel ? "-translate-x-full" : "-translate-x-1/2";
|
|
13
|
+
const firstVisibleBand = bands.findIndex((band) => band.endPct > band.startPct);
|
|
14
|
+
const lastVisibleBand = bands.reduce((acc, band, i) => band.endPct > band.startPct ? i : acc, -1);
|
|
13
15
|
useLayoutEffect(() => {
|
|
14
16
|
const bar = barRef.current;
|
|
15
17
|
const label = labelRef.current;
|
|
@@ -27,7 +29,7 @@ function DensityGauge({ bands, markerPct, markerLabel, markerStatus, labels }) {
|
|
|
27
29
|
bands.map((band, i) => /* @__PURE__ */ jsx(
|
|
28
30
|
"i",
|
|
29
31
|
{
|
|
30
|
-
className: cn("absolute inset-y-0", statusVar({ status: band.status }), i ===
|
|
32
|
+
className: cn("absolute inset-y-0", statusVar({ status: band.status }), i === firstVisibleBand && "rounded-l-[3px]", i === lastVisibleBand && "rounded-r-[3px]"),
|
|
31
33
|
style: {
|
|
32
34
|
left: `${band.startPct}%`,
|
|
33
35
|
width: `${band.endPct - band.startPct}%`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/ui/CheckRow/CheckVisualization/visualizations/DensityGauge.tsx"],"sourcesContent":["\"use client\";\n\nimport { useLayoutEffect, useRef, useState } from \"react\";\nimport { cn } from \"../../../../utils/style\";\nimport { statusVar } from \"../../../../components/SeoDrawer/variants\";\nimport type { GaugeModel } from \"../../../../engine/types/visualization\";\n\nexport function DensityGauge({ bands, markerPct, markerLabel, markerStatus, labels }: GaugeModel) {\n const barRef = useRef<HTMLDivElement>(null);\n const labelRef = useRef<HTMLSpanElement>(null);\n const [dims, setDims] = useState({ bar: 0, label: 0 });\n\n const markerPx = (markerPct / 100) * dims.bar;\n const halfLabel = dims.label / 2;\n const labelAlign = dims.label === 0 ? \"-translate-x-1/2\" : markerPx < halfLabel ? \"translate-x-0\" : markerPx > dims.bar - halfLabel ? \"-translate-x-full\" : \"-translate-x-1/2\";\n\n useLayoutEffect(() => {\n const bar = barRef.current;\n const label = labelRef.current;\n\n if (!(bar && label)) return;\n\n const measure = () => setDims({ bar: bar.offsetWidth, label: label.offsetWidth });\n\n const observer = new ResizeObserver(measure);\n\n measure();\n observer.observe(bar);\n observer.observe(label);\n\n return () => observer.disconnect();\n }, []);\n\n return (\n <>\n <div ref={barRef} className=\"relative h-[6px] rounded-[3px] mt-[24px] mb-[14px]\">\n {bands.map((band, i) => (\n <i\n key={`${band.status}-${i}`}\n className={cn(\"absolute inset-y-0\", statusVar({ status: band.status }), i ===
|
|
1
|
+
{"version":3,"sources":["../../../../../src/ui/CheckRow/CheckVisualization/visualizations/DensityGauge.tsx"],"sourcesContent":["\"use client\";\n\nimport { useLayoutEffect, useRef, useState } from \"react\";\nimport { cn } from \"../../../../utils/style\";\nimport { statusVar } from \"../../../../components/SeoDrawer/variants\";\nimport type { GaugeModel } from \"../../../../engine/types/visualization\";\n\nexport function DensityGauge({ bands, markerPct, markerLabel, markerStatus, labels }: GaugeModel) {\n const barRef = useRef<HTMLDivElement>(null);\n const labelRef = useRef<HTMLSpanElement>(null);\n const [dims, setDims] = useState({ bar: 0, label: 0 });\n\n const markerPx = (markerPct / 100) * dims.bar;\n const halfLabel = dims.label / 2;\n const labelAlign = dims.label === 0 ? \"-translate-x-1/2\" : markerPx < halfLabel ? \"translate-x-0\" : markerPx > dims.bar - halfLabel ? \"-translate-x-full\" : \"-translate-x-1/2\";\n\n const firstVisibleBand = bands.findIndex((band) => band.endPct > band.startPct);\n const lastVisibleBand = bands.reduce((acc, band, i) => (band.endPct > band.startPct ? i : acc), -1);\n\n useLayoutEffect(() => {\n const bar = barRef.current;\n const label = labelRef.current;\n\n if (!(bar && label)) return;\n\n const measure = () => setDims({ bar: bar.offsetWidth, label: label.offsetWidth });\n\n const observer = new ResizeObserver(measure);\n\n measure();\n observer.observe(bar);\n observer.observe(label);\n\n return () => observer.disconnect();\n }, []);\n\n return (\n <>\n <div ref={barRef} className=\"relative h-[6px] rounded-[3px] mt-[24px] mb-[14px]\">\n {bands.map((band, i) => (\n <i\n key={`${band.status}-${i}`}\n className={cn(\"absolute inset-y-0\", statusVar({ status: band.status }), i === firstVisibleBand && \"rounded-l-[3px]\", i === lastVisibleBand && \"rounded-r-[3px]\")}\n style={{\n left: `${band.startPct}%`,\n width: `${band.endPct - band.startPct}%`,\n background: \"var(--seo-c)\",\n }}\n />\n ))}\n <span\n ref={labelRef}\n className={cn(\"absolute bottom-[13px] font-mono font-bold text-[11px] whitespace-nowrap\", statusVar({ status: markerStatus }), labelAlign)}\n style={{ left: `${markerPct}%`, color: \"var(--seo-c)\" }}\n >\n {markerLabel}\n </span>\n <span\n className={cn(\"absolute -top-[3px] -translate-x-1/2 block w-[12px] h-[12px] rounded-full bg-neutral-0 border-2\", statusVar({ status: markerStatus }))}\n style={{ left: `${markerPct}%`, borderColor: \"var(--seo-c)\" }}\n />\n </div>\n <div className=\"relative h-[14px] text-[10px] text-neutral-500\">\n {labels.map((label, i) => (\n <span\n key={`${label.text}-${i}`}\n className={cn(\"absolute whitespace-nowrap\", label.pct <= 0 ? \"translate-x-0\" : label.pct >= 100 ? \"-translate-x-full\" : \"-translate-x-1/2\", label.emphasis === \"good\" && \"text-seo-good\")}\n style={{ left: `${label.pct}%` }}\n >\n {label.text}\n </span>\n ))}\n </div>\n </>\n );\n}\n"],"mappings":";AAqCI,mBAGM,KAFJ,YADF;AAnCJ,SAAS,iBAAiB,QAAQ,gBAAgB;AAClD,SAAS,UAAU;AACnB,SAAS,iBAAiB;AAGnB,SAAS,aAAa,EAAE,OAAO,WAAW,aAAa,cAAc,OAAO,GAAe;AAChG,QAAM,SAAS,OAAuB,IAAI;AAC1C,QAAM,WAAW,OAAwB,IAAI;AAC7C,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,EAAE,KAAK,GAAG,OAAO,EAAE,CAAC;AAErD,QAAM,WAAY,YAAY,MAAO,KAAK;AAC1C,QAAM,YAAY,KAAK,QAAQ;AAC/B,QAAM,aAAa,KAAK,UAAU,IAAI,qBAAqB,WAAW,YAAY,kBAAkB,WAAW,KAAK,MAAM,YAAY,sBAAsB;AAE5J,QAAM,mBAAmB,MAAM,UAAU,CAAC,SAAS,KAAK,SAAS,KAAK,QAAQ;AAC9E,QAAM,kBAAkB,MAAM,OAAO,CAAC,KAAK,MAAM,MAAO,KAAK,SAAS,KAAK,WAAW,IAAI,KAAM,EAAE;AAElG,kBAAgB,MAAM;AACpB,UAAM,MAAM,OAAO;AACnB,UAAM,QAAQ,SAAS;AAEvB,QAAI,EAAE,OAAO;AAAQ;AAErB,UAAM,UAAU,MAAM,QAAQ,EAAE,KAAK,IAAI,aAAa,OAAO,MAAM,YAAY,CAAC;AAEhF,UAAM,WAAW,IAAI,eAAe,OAAO;AAE3C,YAAQ;AACR,aAAS,QAAQ,GAAG;AACpB,aAAS,QAAQ,KAAK;AAEtB,WAAO,MAAM,SAAS,WAAW;AAAA,EACnC,GAAG,CAAC,CAAC;AAEL,SACE,iCACE;AAAA,yBAAC,SAAI,KAAK,QAAQ,WAAU,sDACzB;AAAA,YAAM,IAAI,CAAC,MAAM,MAChB;AAAA,QAAC;AAAA;AAAA,UAEC,WAAW,GAAG,sBAAsB,UAAU,EAAE,QAAQ,KAAK,OAAO,CAAC,GAAG,MAAM,oBAAoB,mBAAmB,MAAM,mBAAmB,iBAAiB;AAAA,UAC/J,OAAO;AAAA,YACL,MAAM,GAAG,KAAK,QAAQ;AAAA,YACtB,OAAO,GAAG,KAAK,SAAS,KAAK,QAAQ;AAAA,YACrC,YAAY;AAAA,UACd;AAAA;AAAA,QANK,GAAG,KAAK,MAAM,IAAI,CAAC;AAAA,MAO1B,CACD;AAAA,MACD;AAAA,QAAC;AAAA;AAAA,UACC,KAAK;AAAA,UACL,WAAW,GAAG,4EAA4E,UAAU,EAAE,QAAQ,aAAa,CAAC,GAAG,UAAU;AAAA,UACzI,OAAO,EAAE,MAAM,GAAG,SAAS,KAAK,OAAO,eAAe;AAAA,UAErD;AAAA;AAAA,MACH;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACC,WAAW,GAAG,mGAAmG,UAAU,EAAE,QAAQ,aAAa,CAAC,CAAC;AAAA,UACpJ,OAAO,EAAE,MAAM,GAAG,SAAS,KAAK,aAAa,eAAe;AAAA;AAAA,MAC9D;AAAA,OACF;AAAA,IACA,oBAAC,SAAI,WAAU,kDACZ,iBAAO,IAAI,CAAC,OAAO,MAClB;AAAA,MAAC;AAAA;AAAA,QAEC,WAAW,GAAG,8BAA8B,MAAM,OAAO,IAAI,kBAAkB,MAAM,OAAO,MAAM,sBAAsB,oBAAoB,MAAM,aAAa,UAAU,eAAe;AAAA,QACxL,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;AAAA,QAE9B,gBAAM;AAAA;AAAA,MAJF,GAAG,MAAM,IAAI,IAAI,CAAC;AAAA,IAKzB,CACD,GACH;AAAA,KACF;AAEJ;","names":[]}
|