@oxy.so/bloom 4.11.0 → 4.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/outline-nav.mdx +22 -0
- package/lib/commonjs/outline-nav/OutlineNav.js +15 -1
- package/lib/commonjs/outline-nav/OutlineNav.js.map +1 -1
- package/lib/module/outline-nav/OutlineNav.js +15 -1
- package/lib/module/outline-nav/OutlineNav.js.map +1 -1
- package/lib/typescript/commonjs/outline-nav/OutlineNav.d.ts.map +1 -1
- package/lib/typescript/commonjs/outline-nav/types.d.ts +8 -0
- package/lib/typescript/commonjs/outline-nav/types.d.ts.map +1 -1
- package/lib/typescript/module/outline-nav/OutlineNav.d.ts.map +1 -1
- package/lib/typescript/module/outline-nav/types.d.ts +8 -0
- package/lib/typescript/module/outline-nav/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/outline-nav/OutlineNav.tsx +23 -2
- package/src/outline-nav/types.ts +8 -0
package/docs/outline-nav.mdx
CHANGED
|
@@ -72,6 +72,28 @@ continuous scroll. A screen that measures scroll passes its own value.
|
|
|
72
72
|
has reached the first heading has read something — and an empty outline at 0,
|
|
73
73
|
which is the honest answer rather than a guess.
|
|
74
74
|
|
|
75
|
+
## Give a heading an `href` and it is a real link
|
|
76
|
+
|
|
77
|
+
On web a heading with an `href` (usually `#id`) renders as an `<a href>`. A
|
|
78
|
+
reader can open it in a new tab, copy it, or middle-click it, and a crawler
|
|
79
|
+
reads the document's structure from the links — none of which a row that only
|
|
80
|
+
answers presses can offer.
|
|
81
|
+
|
|
82
|
+
```tsx
|
|
83
|
+
<OutlineNav
|
|
84
|
+
headings={headings.map((h) => ({ ...h, href: `#${h.id}` }))}
|
|
85
|
+
activeId={activeId}
|
|
86
|
+
onSelect={(heading) => scrollTo(heading.id)}
|
|
87
|
+
/>
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
`onSelect` still owns the ordinary press: a plain click calls it and the
|
|
91
|
+
browser does not follow the link, so the app's own scroll (and any offset for a
|
|
92
|
+
sticky header) is what runs. A modified click — ⌘, Ctrl or Shift held, or a
|
|
93
|
+
button other than the primary — is left to the browser, which opens the tab or
|
|
94
|
+
window the reader asked for. Without `onSelect`, the anchor simply navigates.
|
|
95
|
+
Native ignores `href`.
|
|
96
|
+
|
|
75
97
|
## Traps
|
|
76
98
|
|
|
77
99
|
- **The progress bar is a `Meter`**, so it is a real `progressbar` with a name
|
|
@@ -90,10 +90,15 @@ function OutlineRow({
|
|
|
90
90
|
paddingLeft: 10,
|
|
91
91
|
'--bloom-outline-ring': paint.accent
|
|
92
92
|
};
|
|
93
|
+
// On web a heading with an href is a real anchor (see `OutlineHeading.href`).
|
|
94
|
+
const href = IS_WEB ? heading.href : undefined;
|
|
93
95
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Pressable, {
|
|
94
96
|
...(0, _webData.webDataSet)({
|
|
95
97
|
bloomOutlineRow: ''
|
|
96
98
|
}),
|
|
99
|
+
...(href != null ? {
|
|
100
|
+
href
|
|
101
|
+
} : {}),
|
|
97
102
|
role: "link",
|
|
98
103
|
accessibilityLabel: heading.label
|
|
99
104
|
// The reader is AT this heading; they did not choose it from a set.
|
|
@@ -102,7 +107,16 @@ function OutlineRow({
|
|
|
102
107
|
accessibilityState: {
|
|
103
108
|
selected: active
|
|
104
109
|
},
|
|
105
|
-
onPress: onSelect ?
|
|
110
|
+
onPress: onSelect ? event => {
|
|
111
|
+
if (href != null) {
|
|
112
|
+
// A modified click asks the browser for a tab or a window: leave
|
|
113
|
+
// it the anchor. Only a plain press is the app's jump.
|
|
114
|
+
const click = event.nativeEvent;
|
|
115
|
+
if (click.metaKey || click.ctrlKey || click.shiftKey || (click.button ?? 0) !== 0) return;
|
|
116
|
+
event.preventDefault();
|
|
117
|
+
}
|
|
118
|
+
onSelect(heading);
|
|
119
|
+
} : undefined,
|
|
106
120
|
onHoverIn: onIn,
|
|
107
121
|
onHoverOut: onOut,
|
|
108
122
|
style: [rowStyle, ringOffset],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_index","_useInteractionState","_surfaceLevels","_interactiveWebCss","_webData","_useTheme","_index2","_shared","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","IS_WEB","Platform","OS","STYLE_ID","ROW","OUTLINE_NAV_CSS","interactiveWebCss","selector","varPrefix","reset","transition","outlineOffset","DEFAULT_LABELS","outline","progress","at","of","INDENT","RAIL","OutlineRow","heading","active","paint","height","onSelect","testID","state","hovered","onIn","onOut","useInteractionState","ringOffset","useRingOffsetStyle","rowStyle","flexDirection","alignItems","minHeight","paddingVertical","paddingRight","borderLeftWidth","borderLeftColor","accent","rail","paddingLeft","jsx","Pressable","webDataSet","bloomOutlineRow","role","accessibilityLabel","label","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_index","_useInteractionState","_surfaceLevels","_interactiveWebCss","_webData","_useTheme","_index2","_shared","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","IS_WEB","Platform","OS","STYLE_ID","ROW","OUTLINE_NAV_CSS","interactiveWebCss","selector","varPrefix","reset","transition","outlineOffset","DEFAULT_LABELS","outline","progress","at","of","INDENT","RAIL","OutlineRow","heading","active","paint","height","onSelect","testID","state","hovered","onIn","onOut","useInteractionState","ringOffset","useRingOffsetStyle","rowStyle","flexDirection","alignItems","minHeight","paddingVertical","paddingRight","borderLeftWidth","borderLeftColor","accent","rail","paddingLeft","href","undefined","jsx","Pressable","webDataSet","bloomOutlineRow","role","accessibilityLabel","label","accessibilityState","selected","onPress","event","click","nativeEvent","metaKey","ctrlKey","shiftKey","button","preventDefault","onHoverIn","onHoverOut","style","children","Text","variant","numberOfLines","color","text","quiet","flexShrink","LIST_ROLE","accessibilityRole","LIST_ITEM_ROLE","OutlineList","nodes","depth","activeId","View","marginLeft","map","node","jsxs","id","length","OutlineNav","headings","hideProgress","title","compactMaxLevel","labels","labelsProp","theme","useTheme","surface","useSurfaceFill","useInteractiveWebCss","compact","shown","useMemo","compactHeadings","tree","buildOutlineTree","surfaceTextOn","textSecondary","colors","primarySubtleForeground","textGraphical","value","outlineProgress","Math","max","findIndex","name","marginBottom","Meter","valueText","displayName"],"sourceRoot":"../../../src","sources":["outline-nav/OutlineNav.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,oBAAA,GAAAH,OAAA;AACA,IAAAI,cAAA,GAAAJ,OAAA;AACA,IAAAK,kBAAA,GAAAL,OAAA;AACA,IAAAM,QAAA,GAAAN,OAAA;AAEA,IAAAO,SAAA,GAAAP,OAAA;AACA,IAAAQ,OAAA,GAAAR,OAAA;AACA,IAAAS,OAAA,GAAAT,OAAA;AAAgG,IAAAU,WAAA,GAAAV,OAAA;AAAA,SAAAD,wBAAAY,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAd,uBAAA,YAAAA,CAAAY,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAGhG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAMkB,MAAM,GAAGC,qBAAQ,CAACC,EAAE,KAAK,KAAK;AAEpC,MAAMC,QAAQ,GAAG,2BAA2B;AAC5C,MAAMC,GAAG,GAAG,0BAA0B;AAEtC,MAAMC,eAAe,GAAG,IAAAC,oCAAiB,EAAC;EACxCC,QAAQ,EAAEH,GAAG;EACbI,SAAS,EAAE,eAAe;EAC1BC,KAAK,EAAE,MAAM;EACbC,UAAU,EAAE,kBAAkB;EAC9BC,aAAa,EAAE;AACjB,CAAC,CAAC;AAEF,MAAMC,cAA0C,GAAG;EACjDC,OAAO,EAAE,cAAc;EACvBC,QAAQ,EAAEA,CAACC,EAAE,EAAEC,EAAE,KAAK,WAAWD,EAAE,OAAOC,EAAE;AAC9C,CAAC;;AAED;AACA,MAAMC,MAAM,GAAG,EAAE;AACjB;AACA,MAAMC,IAAI,GAAG,CAAC;AASd,SAASC,UAAUA,CAAC;EAClBC,OAAO;EACPC,MAAM;EACNC,KAAK;EACLC,MAAM;EACNC,QAAQ;EACRC;AAQF,CAAC,EAAE;EACD,MAAM;IAAEC,KAAK,EAAEC,OAAO;IAAEC,IAAI;IAAEC;EAAM,CAAC,GAAG,IAAAC,wCAAmB,EAAC,CAAC;EAC7D,MAAMC,UAAU,GAAG,IAAAC,iCAAkB,EAAC,CAAC;EACvC,MAAMC,QAAqB,GAAG;IAC5BC,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE,QAAQ;IACpBC,SAAS,EAAEb,MAAM;IACjBc,eAAe,EAAE,CAAC;IAClBC,YAAY,EAAE,CAAC;IACfC,eAAe,EAAErB,IAAI;IACrBsB,eAAe,EAAEnB,MAAM,GAAGC,KAAK,CAACmB,MAAM,GAAGnB,KAAK,CAACoB,IAAI;IACnDC,WAAW,EAAE,EAAE;IACf,sBAAsB,EAAErB,KAAK,CAACmB;EAChC,CAAC;EACD;EACA,MAAMG,IAAI,GAAG5C,MAAM,GAAGoB,OAAO,CAACwB,IAAI,GAAGC,SAAS;EAC9C,oBACE,IAAAjE,WAAA,CAAAkE,GAAA,EAAC3E,YAAA,CAAA4E,SAAS;IAAA,GACJ,IAAAC,mBAAU,EAAC;MAAEC,eAAe,EAAE;IAAG,CAAC,CAAC;IAAA,IAClCL,IAAI,IAAI,IAAI,GAAI;MAAEA;IAAK,CAAC,GAA+B,CAAC,CAAC;IAC9DM,IAAI,EAAC,MAAM;IACXC,kBAAkB,EAAE/B,OAAO,CAACgC;IAC5B;IAAA;IACA,gBAAc/B,MAAM,GAAI,UAAU,GAAawB,SAAU;IACzDQ,kBAAkB,EAAE;MAAEC,QAAQ,EAAEjC;IAAO,CAAE;IACzCkC,OAAO,EACL/B,QAAQ,GACHgC,KAA4B,IAAK;MAChC,IAAIZ,IAAI,IAAI,IAAI,EAAE;QAChB;QACA;QACA,MAAMa,KAAK,GAAGD,KAAK,CAACE,WAKnB;QACD,IAAID,KAAK,CAACE,OAAO,IAAIF,KAAK,CAACG,OAAO,IAAIH,KAAK,CAACI,QAAQ,IAAI,CAACJ,KAAK,CAACK,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE;QACnFN,KAAK,CAACO,cAAc,CAAC,CAAC;MACxB;MACAvC,QAAQ,CAACJ,OAAO,CAAC;IACnB,CAAC,GACDyB,SACL;IACDmB,SAAS,EAAEpC,IAAK;IAChBqC,UAAU,EAAEpC,KAAM;IAClBqC,KAAK,EAAE,CAACjC,QAAQ,EAAEF,UAAU,CAAiB;IAC7CN,MAAM,EAAEA,MAAO;IAAA0C,QAAA,eAEf,IAAAvF,WAAA,CAAAkE,GAAA,EAACpE,OAAA,CAAA0F,IAAI;MACHC,OAAO,EAAEhD,MAAM,GAAG,eAAe,GAAG,gBAAiB;MACrDiD,aAAa,EAAE,CAAE;MACjBJ,KAAK,EAAE;QAAEK,KAAK,EAAElD,MAAM,GAAGC,KAAK,CAACmB,MAAM,GAAGd,OAAO,GAAGL,KAAK,CAACkD,IAAI,GAAGlD,KAAK,CAACmD,KAAK;QAAEC,UAAU,EAAE;MAAE,CAAE;MAAAP,QAAA,EAE3F/C,OAAO,CAACgC;IAAK,CACV;EAAC,CACE,CAAC;AAEhB;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAMuB,SAAkC,GAAG3E,MAAM,GAAG;EAAEkD,IAAI,EAAE;AAAO,CAAC,GAAG;EAAE0B,iBAAiB,EAAE;AAAO,CAAC;AACpG,MAAMC,cAAuC,GAAG7E,MAAM,GAAG;EAAEkD,IAAI,EAAE;AAAW,CAAC,GAAG,CAAC,CAAC;AAElF,SAAS4B,WAAWA,CAAC;EACnBC,KAAK;EACLC,KAAK;EACLC,QAAQ;EACR3D,KAAK;EACLC,MAAM;EACNC,QAAQ;EACRC;AASF,CAAC,EAAE;EACD,oBACE,IAAA7C,WAAA,CAAAkE,GAAA,EAAC3E,YAAA,CAAA+G,IAAI;IAAA,GAAKP,SAAS;IAAET,KAAK,EAAEc,KAAK,KAAK,CAAC,GAAGnC,SAAS,GAAG;MAAEsC,UAAU,EAAElE;IAAO,CAAE;IAAAkD,QAAA,EAC1EY,KAAK,CAACK,GAAG,CAAEC,IAAI,iBACd,IAAAzG,WAAA,CAAA0G,IAAA,EAACnH,YAAA,CAAA+G,IAAI;MAAA,GAA2BL,cAAc;MAAAV,QAAA,gBAC5C,IAAAvF,WAAA,CAAAkE,GAAA,EAAC3B,UAAU;QACTC,OAAO,EAAEiE,IAAI,CAACjE,OAAQ;QACtBC,MAAM,EAAEgE,IAAI,CAACjE,OAAO,CAACmE,EAAE,KAAKN,QAAS;QACrC3D,KAAK,EAAEA,KAAM;QACbC,MAAM,EAAEA,MAAO;QACfC,QAAQ,EAAEA,QAAS;QACnBC,MAAM,EAAEA,MAAM,GAAG,GAAGA,MAAM,IAAI4D,IAAI,CAACjE,OAAO,CAACmE,EAAE,EAAE,GAAG1C;MAAU,CAC7D,CAAC,EACDwC,IAAI,CAAClB,QAAQ,CAACqB,MAAM,GAAG,CAAC,gBACvB,IAAA5G,WAAA,CAAAkE,GAAA,EAACgC,WAAW;QACVC,KAAK,EAAEM,IAAI,CAAClB,QAAS;QACrBa,KAAK,EAAEA,KAAK,GAAG,CAAE;QACjBC,QAAQ,EAAEA,QAAS;QACnB3D,KAAK,EAAEA,KAAM;QACbC,MAAM,EAAEA,MAAO;QACfC,QAAQ,EAAEA,QAAS;QACnBC,MAAM,EAAEA;MAAO,CAChB,CAAC,GACA,IAAI;IAAA,GAnBC4D,IAAI,CAACjE,OAAO,CAACmE,EAoBlB,CACP;EAAC,CACE,CAAC;AAEX;AAEO,SAASE,UAAUA,CAAC;EACzBC,QAAQ;EACRT,QAAQ;EACRzD,QAAQ;EACR6C,OAAO,GAAG,MAAM;EAChBvD,QAAQ;EACR6E,YAAY,GAAG,KAAK;EACpBC,KAAK;EACLC,eAAe,GAAG,CAAC;EACnB1C,kBAAkB;EAClB2C,MAAM,EAAEC,UAAU;EAClB7B,KAAK;EACLzC;AACe,CAAC,EAAE;EAClB,MAAMuE,KAAK,GAAG,IAAAC,kBAAQ,EAAC,CAAC;EACxB,MAAMC,OAAO,GAAG,IAAAC,6BAAc,EAAC,CAAC;EAChC,IAAAC,uCAAoB,EAACjG,QAAQ,EAAEE,eAAe,CAAC;EAC/C,MAAMyF,MAAM,GAAG;IAAE,GAAGlF,cAAc;IAAE,GAAGmF;EAAW,CAAC;EACnD,MAAMM,OAAO,GAAGhC,OAAO,KAAK,SAAS;EAErC,MAAMiC,KAAK,GAAG,IAAAC,cAAO,EACnB,MAAOF,OAAO,GAAG,IAAAG,uBAAe,EAACd,QAAQ,EAAEG,eAAe,CAAC,GAAGH,QAAS,EACvE,CAACW,OAAO,EAAEX,QAAQ,EAAEG,eAAe,CACrC,CAAC;EACD,MAAMY,IAAI,GAAG,IAAAF,cAAO,EAAC,MAAM,IAAAG,wBAAgB,EAACJ,KAAK,CAAC,EAAE,CAACA,KAAK,CAAC,CAAC;EAE5D,MAAMhF,KAAK,GAAG,IAAAiF,cAAO,EAAW,MAAM;IACpC,MAAM/B,IAAI,GAAG,IAAAmC,4BAAa,EAACX,KAAK,EAAEE,OAAO,CAAC;IAC1C,OAAO;MACL1B,IAAI,EAAEA,IAAI,CAACA,IAAI;MACfC,KAAK,EAAED,IAAI,CAACoC,aAAa;MACzBnE,MAAM,EAAEuD,KAAK,CAACa,MAAM,CAACC,uBAAuB;MAC5CpE,IAAI,EAAE8B,IAAI,CAACuC;IACb,CAAC;EACH,CAAC,EAAE,CAACf,KAAK,EAAEE,OAAO,CAAC,CAAC;EAEpB,MAAMc,KAAK,GAAGlG,QAAQ,IAAI,IAAAmG,uBAAe,EAACX,KAAK,EAAErB,QAAQ,CAAC;EAC1D,MAAMlE,EAAE,GAAGmG,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEb,KAAK,CAACc,SAAS,CAAEhG,OAAO,IAAKA,OAAO,CAACmE,EAAE,KAAKN,QAAQ,CAAC,CAAC,GAAG,CAAC;EACjF,MAAMoC,IAAI,GAAGlE,kBAAkB,IAAI2C,MAAM,CAACjF,OAAO;EAEjD,oBACE,IAAAjC,WAAA,CAAA0G,IAAA,EAACnH,YAAA,CAAA+G,IAAI;IACHhC,IAAI,EAAC,YAAY;IACjBC,kBAAkB,EAAEkE,IAAK;IACzBnD,KAAK,EAAEA,KAAM;IACbzC,MAAM,EAAEA,MAAO;IAAA0C,QAAA,GAEd,CAACkC,OAAO,IAAI,CAACT,KAAK,IAAIE,MAAM,CAACjF,OAAO,MAAMgC,SAAS,gBAClD,IAAAjE,WAAA,CAAAkE,GAAA,EAACpE,OAAA,CAAA0F,IAAI;MACHC,OAAO,EAAC,kBAAkB;MAC1BH,KAAK,EAAE;QAAEK,KAAK,EAAEjD,KAAK,CAACmD,KAAK;QAAE6C,YAAY,EAAE,CAAC;QAAE3E,WAAW,EAAE;MAAG,CAAE;MAChElB,MAAM,EAAEA,MAAM,GAAG,GAAGA,MAAM,QAAQ,GAAGoB,SAAU;MAAAsB,QAAA,EAE9CyB,KAAK,IAAIE,MAAM,CAACjF;IAAO,CACpB,CAAC,GACL,IAAI,EACP8E,YAAY,GAAG,IAAI,gBAClB,IAAA/G,WAAA,CAAAkE,GAAA,EAAC1E,MAAA,CAAAmJ,KAAK;MACJP,KAAK,EAAEA,KAAM;MACbzF,MAAM,EAAE8E,OAAO,GAAG,CAAC,GAAG,CAAE;MACxBlD,kBAAkB,EAAEkE,IAAK;MACzBG,SAAS,EAAE1B,MAAM,CAAChF,QAAQ,CAACC,EAAE,EAAEuF,KAAK,CAACd,MAAM,CAAE;MAC7CtB,KAAK,EAAE;QAAEoD,YAAY,EAAEjB,OAAO,GAAG,CAAC,GAAG;MAAG,CAAE;MAC1C5E,MAAM,EAAEA,MAAM,GAAG,GAAGA,MAAM,WAAW,GAAGoB;IAAU,CACnD,CACF,eACD,IAAAjE,WAAA,CAAAkE,GAAA,EAACgC,WAAW;MACVC,KAAK,EAAE0B,IAAK;MACZzB,KAAK,EAAE,CAAE;MACTC,QAAQ,EAAEA,QAAS;MACnB3D,KAAK,EAAEA,KAAM;MACbC,MAAM,EAAE8E,OAAO,GAAG,EAAE,GAAG,EAAG;MAC1B7E,QAAQ,EAAEA,QAAS;MACnBC,MAAM,EAAEA,MAAM,GAAG,GAAGA,MAAM,MAAM,GAAGoB;IAAU,CAC9C,CAAC;EAAA,CACE,CAAC;AAEX;AACA4C,UAAU,CAACgC,WAAW,GAAG,YAAY","ignoreList":[]}
|
|
@@ -85,10 +85,15 @@ function OutlineRow({
|
|
|
85
85
|
paddingLeft: 10,
|
|
86
86
|
'--bloom-outline-ring': paint.accent
|
|
87
87
|
};
|
|
88
|
+
// On web a heading with an href is a real anchor (see `OutlineHeading.href`).
|
|
89
|
+
const href = IS_WEB ? heading.href : undefined;
|
|
88
90
|
return /*#__PURE__*/_jsx(Pressable, {
|
|
89
91
|
...webDataSet({
|
|
90
92
|
bloomOutlineRow: ''
|
|
91
93
|
}),
|
|
94
|
+
...(href != null ? {
|
|
95
|
+
href
|
|
96
|
+
} : {}),
|
|
92
97
|
role: "link",
|
|
93
98
|
accessibilityLabel: heading.label
|
|
94
99
|
// The reader is AT this heading; they did not choose it from a set.
|
|
@@ -97,7 +102,16 @@ function OutlineRow({
|
|
|
97
102
|
accessibilityState: {
|
|
98
103
|
selected: active
|
|
99
104
|
},
|
|
100
|
-
onPress: onSelect ?
|
|
105
|
+
onPress: onSelect ? event => {
|
|
106
|
+
if (href != null) {
|
|
107
|
+
// A modified click asks the browser for a tab or a window: leave
|
|
108
|
+
// it the anchor. Only a plain press is the app's jump.
|
|
109
|
+
const click = event.nativeEvent;
|
|
110
|
+
if (click.metaKey || click.ctrlKey || click.shiftKey || (click.button ?? 0) !== 0) return;
|
|
111
|
+
event.preventDefault();
|
|
112
|
+
}
|
|
113
|
+
onSelect(heading);
|
|
114
|
+
} : undefined,
|
|
101
115
|
onHoverIn: onIn,
|
|
102
116
|
onHoverOut: onOut,
|
|
103
117
|
style: [rowStyle, ringOffset],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useMemo","Platform","Pressable","View","Meter","useInteractionState","surfaceTextOn","useRingOffsetStyle","useSurfaceFill","interactiveWebCss","useInteractiveWebCss","webDataSet","useTheme","Text","buildOutlineTree","compactHeadings","outlineProgress","jsx","_jsx","jsxs","_jsxs","IS_WEB","OS","STYLE_ID","ROW","OUTLINE_NAV_CSS","selector","varPrefix","reset","transition","outlineOffset","DEFAULT_LABELS","outline","progress","at","of","INDENT","RAIL","OutlineRow","heading","active","paint","height","onSelect","testID","state","hovered","onIn","onOut","ringOffset","rowStyle","flexDirection","alignItems","minHeight","paddingVertical","paddingRight","borderLeftWidth","borderLeftColor","accent","rail","paddingLeft","bloomOutlineRow","role","accessibilityLabel","label","
|
|
1
|
+
{"version":3,"names":["React","useMemo","Platform","Pressable","View","Meter","useInteractionState","surfaceTextOn","useRingOffsetStyle","useSurfaceFill","interactiveWebCss","useInteractiveWebCss","webDataSet","useTheme","Text","buildOutlineTree","compactHeadings","outlineProgress","jsx","_jsx","jsxs","_jsxs","IS_WEB","OS","STYLE_ID","ROW","OUTLINE_NAV_CSS","selector","varPrefix","reset","transition","outlineOffset","DEFAULT_LABELS","outline","progress","at","of","INDENT","RAIL","OutlineRow","heading","active","paint","height","onSelect","testID","state","hovered","onIn","onOut","ringOffset","rowStyle","flexDirection","alignItems","minHeight","paddingVertical","paddingRight","borderLeftWidth","borderLeftColor","accent","rail","paddingLeft","href","undefined","bloomOutlineRow","role","accessibilityLabel","label","accessibilityState","selected","onPress","event","click","nativeEvent","metaKey","ctrlKey","shiftKey","button","preventDefault","onHoverIn","onHoverOut","style","children","variant","numberOfLines","color","text","quiet","flexShrink","LIST_ROLE","accessibilityRole","LIST_ITEM_ROLE","OutlineList","nodes","depth","activeId","marginLeft","map","node","id","length","OutlineNav","headings","hideProgress","title","compactMaxLevel","labels","labelsProp","theme","surface","compact","shown","tree","textSecondary","colors","primarySubtleForeground","textGraphical","value","Math","max","findIndex","name","marginBottom","valueText","displayName"],"sourceRoot":"../../../src","sources":["outline-nav/OutlineNav.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OutlineNav.d.ts","sourceRoot":"","sources":["../../../../src/outline-nav/OutlineNav.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAoC,eAAe,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"OutlineNav.d.ts","sourceRoot":"","sources":["../../../../src/outline-nav/OutlineNav.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAoC,eAAe,EAAE,MAAM,SAAS,CAAC;AA8LjF,wBAAgB,UAAU,CAAC,EACzB,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,OAAgB,EAChB,QAAQ,EACR,YAAoB,EACpB,KAAK,EACL,eAAmB,EACnB,kBAAkB,EAClB,MAAM,EAAE,UAAU,EAClB,KAAK,EACL,MAAM,GACP,EAAE,eAAe,2CAgEjB;yBA7Ee,UAAU"}
|
|
@@ -11,6 +11,14 @@ export interface OutlineHeading {
|
|
|
11
11
|
* arithmetic.
|
|
12
12
|
*/
|
|
13
13
|
level: number;
|
|
14
|
+
/**
|
|
15
|
+
* Where the heading lives, usually `#id`. On web it makes the row a real
|
|
16
|
+
* `<a href>`: a reader can open it in a new tab, copy it, or middle-click it,
|
|
17
|
+
* and a crawler sees the document's structure. A plain press still goes to
|
|
18
|
+
* `onSelect` (the app does the jumping); a modified one (⌘/Ctrl/Shift, or a
|
|
19
|
+
* button other than the primary) is left to the browser. Ignored on native.
|
|
20
|
+
*/
|
|
21
|
+
href?: string;
|
|
14
22
|
}
|
|
15
23
|
/**
|
|
16
24
|
* `full` is the side column of a wide screen: a title, the progress bar and the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/outline-nav/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzD,8DAA8D;AAC9D,MAAM,WAAW,cAAc;IAC7B,uEAAuE;IACvE,EAAE,EAAE,MAAM,CAAC;IACX,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,SAAS,CAAC;AAEnD,+CAA+C;AAC/C,MAAM,WAAW,gBAAgB;IAC/B,kFAAkF;IAClF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8HAA8H;IAC9H,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;CAC/C;AAED,MAAM,WAAW,eAAe;IAC9B,uCAAuC;IACvC,QAAQ,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IACxC,qFAAqF;IACrF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;IAC7C,sBAAsB;IACtB,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oEAAoE;IACpE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/outline-nav/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzD,8DAA8D;AAC9D,MAAM,WAAW,cAAc;IAC7B,uEAAuE;IACvE,EAAE,EAAE,MAAM,CAAC;IACX,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,SAAS,CAAC;AAEnD,+CAA+C;AAC/C,MAAM,WAAW,gBAAgB;IAC/B,kFAAkF;IAClF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8HAA8H;IAC9H,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;CAC/C;AAED,MAAM,WAAW,eAAe;IAC9B,uCAAuC;IACvC,QAAQ,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IACxC,qFAAqF;IACrF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;IAC7C,sBAAsB;IACtB,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oEAAoE;IACpE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OutlineNav.d.ts","sourceRoot":"","sources":["../../../../src/outline-nav/OutlineNav.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAoC,eAAe,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"OutlineNav.d.ts","sourceRoot":"","sources":["../../../../src/outline-nav/OutlineNav.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAoC,eAAe,EAAE,MAAM,SAAS,CAAC;AA8LjF,wBAAgB,UAAU,CAAC,EACzB,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,OAAgB,EAChB,QAAQ,EACR,YAAoB,EACpB,KAAK,EACL,eAAmB,EACnB,kBAAkB,EAClB,MAAM,EAAE,UAAU,EAClB,KAAK,EACL,MAAM,GACP,EAAE,eAAe,2CAgEjB;yBA7Ee,UAAU"}
|
|
@@ -11,6 +11,14 @@ export interface OutlineHeading {
|
|
|
11
11
|
* arithmetic.
|
|
12
12
|
*/
|
|
13
13
|
level: number;
|
|
14
|
+
/**
|
|
15
|
+
* Where the heading lives, usually `#id`. On web it makes the row a real
|
|
16
|
+
* `<a href>`: a reader can open it in a new tab, copy it, or middle-click it,
|
|
17
|
+
* and a crawler sees the document's structure. A plain press still goes to
|
|
18
|
+
* `onSelect` (the app does the jumping); a modified one (⌘/Ctrl/Shift, or a
|
|
19
|
+
* button other than the primary) is left to the browser. Ignored on native.
|
|
20
|
+
*/
|
|
21
|
+
href?: string;
|
|
14
22
|
}
|
|
15
23
|
/**
|
|
16
24
|
* `full` is the side column of a wide screen: a title, the progress bar and the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/outline-nav/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzD,8DAA8D;AAC9D,MAAM,WAAW,cAAc;IAC7B,uEAAuE;IACvE,EAAE,EAAE,MAAM,CAAC;IACX,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,SAAS,CAAC;AAEnD,+CAA+C;AAC/C,MAAM,WAAW,gBAAgB;IAC/B,kFAAkF;IAClF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8HAA8H;IAC9H,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;CAC/C;AAED,MAAM,WAAW,eAAe;IAC9B,uCAAuC;IACvC,QAAQ,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IACxC,qFAAqF;IACrF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;IAC7C,sBAAsB;IACtB,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oEAAoE;IACpE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/outline-nav/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzD,8DAA8D;AAC9D,MAAM,WAAW,cAAc;IAC7B,uEAAuE;IACvE,EAAE,EAAE,MAAM,CAAC;IACX,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,SAAS,CAAC;AAEnD,+CAA+C;AAC/C,MAAM,WAAW,gBAAgB;IAC/B,kFAAkF;IAClF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8HAA8H;IAC9H,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;CAC/C;AAED,MAAM,WAAW,eAAe;IAC9B,uCAAuC;IACvC,QAAQ,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IACxC,qFAAqF;IACrF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;IAC7C,sBAAsB;IACtB,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oEAAoE;IACpE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React, { useMemo } from 'react';
|
|
2
|
-
import { Platform, Pressable, View } from 'react-native';
|
|
2
|
+
import { Platform, Pressable, View, type GestureResponderEvent } from 'react-native';
|
|
3
3
|
|
|
4
4
|
import { Meter } from '../stat-bar';
|
|
5
5
|
import { useInteractionState } from '../hooks/use-interaction-state';
|
|
@@ -100,15 +100,36 @@ function OutlineRow({
|
|
|
100
100
|
paddingLeft: 10,
|
|
101
101
|
'--bloom-outline-ring': paint.accent,
|
|
102
102
|
};
|
|
103
|
+
// On web a heading with an href is a real anchor (see `OutlineHeading.href`).
|
|
104
|
+
const href = IS_WEB ? heading.href : undefined;
|
|
103
105
|
return (
|
|
104
106
|
<Pressable
|
|
105
107
|
{...webDataSet({ bloomOutlineRow: '' })}
|
|
108
|
+
{...(href != null ? ({ href } as Record<string, unknown>) : {})}
|
|
106
109
|
role="link"
|
|
107
110
|
accessibilityLabel={heading.label}
|
|
108
111
|
// The reader is AT this heading; they did not choose it from a set.
|
|
109
112
|
aria-current={active ? ('location' as const) : undefined}
|
|
110
113
|
accessibilityState={{ selected: active }}
|
|
111
|
-
onPress={
|
|
114
|
+
onPress={
|
|
115
|
+
onSelect
|
|
116
|
+
? (event: GestureResponderEvent) => {
|
|
117
|
+
if (href != null) {
|
|
118
|
+
// A modified click asks the browser for a tab or a window: leave
|
|
119
|
+
// it the anchor. Only a plain press is the app's jump.
|
|
120
|
+
const click = event.nativeEvent as unknown as {
|
|
121
|
+
metaKey?: boolean;
|
|
122
|
+
ctrlKey?: boolean;
|
|
123
|
+
shiftKey?: boolean;
|
|
124
|
+
button?: number;
|
|
125
|
+
};
|
|
126
|
+
if (click.metaKey || click.ctrlKey || click.shiftKey || (click.button ?? 0) !== 0) return;
|
|
127
|
+
event.preventDefault();
|
|
128
|
+
}
|
|
129
|
+
onSelect(heading);
|
|
130
|
+
}
|
|
131
|
+
: undefined
|
|
132
|
+
}
|
|
112
133
|
onHoverIn={onIn}
|
|
113
134
|
onHoverOut={onOut}
|
|
114
135
|
style={[rowStyle, ringOffset as WebCssStyle]}
|
package/src/outline-nav/types.ts
CHANGED
|
@@ -12,6 +12,14 @@ export interface OutlineHeading {
|
|
|
12
12
|
* arithmetic.
|
|
13
13
|
*/
|
|
14
14
|
level: number;
|
|
15
|
+
/**
|
|
16
|
+
* Where the heading lives, usually `#id`. On web it makes the row a real
|
|
17
|
+
* `<a href>`: a reader can open it in a new tab, copy it, or middle-click it,
|
|
18
|
+
* and a crawler sees the document's structure. A plain press still goes to
|
|
19
|
+
* `onSelect` (the app does the jumping); a modified one (⌘/Ctrl/Shift, or a
|
|
20
|
+
* button other than the primary) is left to the browser. Ignored on native.
|
|
21
|
+
*/
|
|
22
|
+
href?: string;
|
|
15
23
|
}
|
|
16
24
|
|
|
17
25
|
/**
|