@studiotitta/studio-editori 0.1.10 → 0.1.12

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.
@@ -232,6 +232,23 @@ function lueTeksti(elementti, monirivinen) {
232
232
  function onMonirivinen(maaritys) {
233
233
  return maaritys?.tyyppi === "tekstilista" || maaritys?.tyyppi === "tekstialue";
234
234
  }
235
+ /**
236
+ * Mitä Enter (tai erotin) tekee kentässä, kentän mittalapussa näytettynä.
237
+ *
238
+ * Monirivinen lista on sivulla kappaleita, tavallinen lista luettelo, ja
239
+ * erottimella näytetty lista yksi rivi, jonka kohdat erotetaan merkillä.
240
+ */
241
+ function enterinOhje(maaritys) {
242
+ if (maaritys?.tyyppi === "tekstialue")
243
+ return "Enter: uusi rivi";
244
+ if (maaritys?.tyyppi !== "tekstilista")
245
+ return undefined;
246
+ if (maaritys.erotin) {
247
+ const merkki = maaritys.erotin.trim();
248
+ return `${merkki === "," ? "Pilkku" : `"${merkki}"`}: uusi kohta`;
249
+ }
250
+ return maaritys.monirivinen ? "Enter: uusi kappale" : "Enter: uusi kohta";
251
+ }
235
252
  /** Sivulla olevat muokattavat kohdat merkintöineen. */
236
253
  function merkinnat() {
237
254
  const tulos = [];
@@ -832,11 +849,7 @@ export function Muokkaustila() {
832
849
  kohde: kaannettavat
833
850
  .filter(({ polku }) => polku.tunnus !== undefined)
834
851
  .map(({ nimi }) => nimi),
835
- }, valitse: setValittu, lisaaKohde: lisaaKohde, poistaKohde: poistaKohde })) : null, muokataan && aktiivinen ? (_jsx(KentanMittaLappu, { elementti: aktiivinen.elementti, nimi: aktiivinen.elementti.getAttribute("data-editori-nimi") ?? "", mitta: kentanMitta(aktiivisenMaaritys, lueTeksti(aktiivinen.elementti, onMonirivinen(aktiivisenMaaritys))), vihje: aktiivinen.vihje, ohje: aktiivisenMaaritys?.tyyppi === "tekstialue"
836
- ? "Enter tekee uuden rivin, tyhjä rivi kappalevälin."
837
- : aktiivisenMaaritys?.tyyppi === "tekstilista"
838
- ? "Jokainen rivi on oma kohtansa."
839
- : undefined })) : null, _jsx("div", { className: "palkki", role: "region", "aria-label": "Sis\u00E4ll\u00F6n muokkaus", children: tila === "lataa" ? (_jsx("span", { className: "tila", children: "Editori avautuu\u2026" })) : muokataan || tallentaa ? (_jsxs(_Fragment, { children: [_jsx("span", { className: "tila", role: "status", "data-virhe": viesti ? "1" : "0", children: tallentaa ? "Tallennetaan…" : (viesti ?? "") !== "" ? viesti : "Muokkaat sivua" }), _jsx("button", { type: "button", onClick: peru, disabled: tallentaa, children: "Peru" }), _jsx("button", { type: "button", className: "ensisijainen", onClick: tallenna, disabled: tallentaa, children: "Tallenna" })] })) : (_jsxs(_Fragment, { children: [viesti ? (_jsx("span", { className: "tila", role: "status", "data-virhe": tila === "virhe" ? "1" : "0", children: viesti })) : null, tila === "tallennettu" ? (_jsx("button", { type: "button", onClick: () => location.reload(), children: "P\u00E4ivit\u00E4 sivu" })) : null, sisalto && malli ? (_jsx("button", { type: "button", className: "ensisijainen", onClick: paalle, children: "Muokkaa" })) : sisalto ? (_jsx("span", { className: "tila", children: "T\u00E4ll\u00E4 sivulla ei ole muokattavaa sis\u00E4lt\u00F6\u00E4." })) : (_jsx("button", { type: "button", onClick: () => location.reload(), children: "Lataa uudelleen" }))] })) })] }));
852
+ }, valitse: setValittu, lisaaKohde: lisaaKohde, poistaKohde: poistaKohde })) : null, muokataan && aktiivinen ? (_jsx(KentanMittaLappu, { elementti: aktiivinen.elementti, nimi: aktiivinen.elementti.getAttribute("data-editori-nimi") ?? "", mitta: kentanMitta(aktiivisenMaaritys, lueTeksti(aktiivinen.elementti, onMonirivinen(aktiivisenMaaritys))), vihje: aktiivinen.vihje, ohje: enterinOhje(aktiivisenMaaritys) })) : null, _jsx("div", { className: "palkki", role: "region", "aria-label": "Sis\u00E4ll\u00F6n muokkaus", children: tila === "lataa" ? (_jsx("span", { className: "tila", children: "Editori avautuu\u2026" })) : muokataan || tallentaa ? (_jsxs(_Fragment, { children: [_jsx("span", { className: "tila", role: "status", "data-virhe": viesti ? "1" : "0", children: tallentaa ? "Tallennetaan…" : (viesti ?? "") !== "" ? viesti : "Muokkaat sivua" }), _jsx("button", { type: "button", onClick: peru, disabled: tallentaa, children: "Peru" }), _jsx("button", { type: "button", className: "ensisijainen", onClick: tallenna, disabled: tallentaa, children: "Tallenna" })] })) : (_jsxs(_Fragment, { children: [viesti ? (_jsx("span", { className: "tila", role: "status", "data-virhe": tila === "virhe" ? "1" : "0", children: viesti })) : null, tila === "tallennettu" ? (_jsx("button", { type: "button", onClick: () => location.reload(), children: "P\u00E4ivit\u00E4 sivu" })) : null, sisalto && malli ? (_jsx("button", { type: "button", className: "ensisijainen", onClick: paalle, children: "Muokkaa" })) : sisalto ? (_jsx("span", { className: "tila", children: "T\u00E4ll\u00E4 sivulla ei ole muokattavaa sis\u00E4lt\u00F6\u00E4." })) : (_jsx("button", { type: "button", onClick: () => location.reload(), children: "Lataa uudelleen" }))] })) })] }));
840
853
  }
841
854
  /**
842
855
  * Lappu aktiivisen kentän alla: nimi, täyttöaste ja hetkellinen vihje.
@@ -33,6 +33,7 @@ export interface Solmu {
33
33
  nodeName: string;
34
34
  textContent: string | null;
35
35
  childNodes: ArrayLike<Solmu>;
36
+ getAttribute?(nimi: string): string | null;
36
37
  }
37
38
  /**
38
39
  * Monirivisen kentän teksti sivun rakenteesta: kappale, listan kohta ja
@@ -42,5 +43,9 @@ export interface Solmu {
42
43
  * Piilossa olevasta kohdasta (esim. vierityksen mukaan vaihtuva osio) se
43
44
  * palauttaa tyhjää ja versaaliksi muotoillusta ("text-transform") isoja
44
45
  * kirjaimia — ja tallennus kirjoitti ne tiedostoon muutoksina.
46
+ *
47
+ * Ruudunlukijalta piilotettu (aria-hidden) ei ole sisältöä vaan sivuston
48
+ * koriste: juokseva numero "01", nuoli, tavaramerkki. Ennen tätä numerot
49
+ * luettiin tekstiin ja tallentuivat sisältöön ("01Ensimmäiset…").
45
50
  */
46
51
  export declare function tekstiRiveina(juuri: Solmu): string;
@@ -64,6 +64,10 @@ const LOHKO = /^(P|DIV|LI|H[1-6]|BLOCKQUOTE|PRE)$/;
64
64
  * Piilossa olevasta kohdasta (esim. vierityksen mukaan vaihtuva osio) se
65
65
  * palauttaa tyhjää ja versaaliksi muotoillusta ("text-transform") isoja
66
66
  * kirjaimia — ja tallennus kirjoitti ne tiedostoon muutoksina.
67
+ *
68
+ * Ruudunlukijalta piilotettu (aria-hidden) ei ole sisältöä vaan sivuston
69
+ * koriste: juokseva numero "01", nuoli, tavaramerkki. Ennen tätä numerot
70
+ * luettiin tekstiin ja tallentuivat sisältöön ("01Ensimmäiset…").
67
71
  */
68
72
  export function tekstiRiveina(juuri) {
69
73
  let tulos = "";
@@ -78,6 +82,8 @@ export function tekstiRiveina(juuri) {
78
82
  }
79
83
  if (solmu.nodeType !== 1)
80
84
  return;
85
+ if (solmu.getAttribute?.("aria-hidden") === "true")
86
+ return;
81
87
  if (solmu.nodeName === "BR") {
82
88
  tulos += "\n";
83
89
  return;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@studiotitta/studio-editori",
3
- "version": "0.1.10",
3
+ "version": "0.1.12",
4
4
  "description": "Studio Titan sisältöeditori asiakassivustoille: tekstit ja kuvat muokataan suoraan sivulla",
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",