@rdlabo/ionic-theme-ios27 1.2.1-beta.pr275.shad339e7688db7 → 2.0.0-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/README.md +24 -280
- package/dist/css/components/ion-toolbar.css +1 -1
- package/dist/css/ionic-theme-ios27.css +1 -1
- package/dist/css/vertical-bars.css +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/layout/index.d.ts +18 -0
- package/dist/layout/index.d.ts.map +1 -0
- package/dist/layout/index.js +26 -0
- package/dist/layout/index.js.map +1 -0
- package/dist/segment/index.js +3 -3
- package/dist/segment/index.js.map +1 -1
- package/dist/sheets-of-glass/index.js +7 -7
- package/dist/sheets-of-glass/index.js.map +1 -1
- package/dist/tab-bar-searchable/dismiss-button.js +53 -3
- package/dist/tab-bar-searchable/dismiss-button.js.map +1 -1
- package/dist/tab-bar-searchable/index.js +18 -3
- package/dist/tab-bar-searchable/index.js.map +1 -1
- package/dist/transition/ios.transition.d.ts.map +1 -1
- package/dist/transition/ios.transition.js +7 -4
- package/dist/transition/ios.transition.js.map +1 -1
- package/dist/transition/native-ui.d.ts +6 -0
- package/dist/transition/native-ui.d.ts.map +1 -0
- package/dist/{native-integration/index.js → transition/native-ui.js} +16 -30
- package/dist/transition/native-ui.js.map +1 -0
- package/docs/adaptive-themes.md +161 -0
- package/docs/add-native-ui.md +53 -0
- package/docs/animation.md +19 -3
- package/docs/eslint.md +3 -1
- package/docs/features.md +9 -5
- package/docs/iphone-duo.md +62 -35
- package/docs/migration.md +17 -26
- package/docs/setup.md +92 -0
- package/docs/special-markup.md +41 -10
- package/docs/using-ion-item-group.md +2 -2
- package/docs/vertical-bars-layout.md +67 -0
- package/package.json +12 -42
- package/src/index.ts +3 -1
- package/src/layout/index.ts +29 -0
- package/src/segment/index.ts +3 -3
- package/src/sheets-of-glass/index.ts +7 -7
- package/src/styles/components/ion-toolbar.scss +1 -1
- package/src/styles/vertical-bars.scss +15 -18
- package/src/tab-bar-searchable/dismiss-button.ts +73 -4
- package/src/tab-bar-searchable/index.ts +20 -3
- package/src/transition/ios.transition.ts +7 -4
- package/src/{native-integration/index.ts → transition/native-ui.ts} +17 -46
- package/Package.swift +0 -21
- package/dist/_virtual/_rolldown/runtime.js +0 -13
- package/dist/native/components/index.d.ts +0 -19
- package/dist/native/components/index.d.ts.map +0 -1
- package/dist/native/components/index.js +0 -40
- package/dist/native/components/index.js.map +0 -1
- package/dist/native/components/ion-back-button.d.ts +0 -9
- package/dist/native/components/ion-back-button.d.ts.map +0 -1
- package/dist/native/components/ion-back-button.js +0 -20
- package/dist/native/components/ion-back-button.js.map +0 -1
- package/dist/native/components/ion-button.d.ts +0 -10
- package/dist/native/components/ion-button.d.ts.map +0 -1
- package/dist/native/components/ion-button.js +0 -23
- package/dist/native/components/ion-button.js.map +0 -1
- package/dist/native/components/ion-buttons.d.ts +0 -11
- package/dist/native/components/ion-buttons.d.ts.map +0 -1
- package/dist/native/components/ion-buttons.js +0 -30
- package/dist/native/components/ion-buttons.js.map +0 -1
- package/dist/native/components/ion-fab.d.ts +0 -10
- package/dist/native/components/ion-fab.d.ts.map +0 -1
- package/dist/native/components/ion-fab.js +0 -132
- package/dist/native/components/ion-fab.js.map +0 -1
- package/dist/native/components/ion-menu-button.d.ts +0 -13
- package/dist/native/components/ion-menu-button.d.ts.map +0 -1
- package/dist/native/components/ion-menu-button.js +0 -31
- package/dist/native/components/ion-menu-button.js.map +0 -1
- package/dist/native/components/ion-segment.d.ts +0 -11
- package/dist/native/components/ion-segment.d.ts.map +0 -1
- package/dist/native/components/ion-segment.js +0 -30
- package/dist/native/components/ion-segment.js.map +0 -1
- package/dist/native/components/ion-tab-bar.d.ts +0 -11
- package/dist/native/components/ion-tab-bar.d.ts.map +0 -1
- package/dist/native/components/ion-tab-bar.js +0 -50
- package/dist/native/components/ion-tab-bar.js.map +0 -1
- package/dist/native/components/searchable-tabs.d.ts +0 -20
- package/dist/native/components/searchable-tabs.d.ts.map +0 -1
- package/dist/native/components/searchable-tabs.js +0 -383
- package/dist/native/components/searchable-tabs.js.map +0 -1
- package/dist/native/definitions.d.ts +0 -191
- package/dist/native/definitions.d.ts.map +0 -1
- package/dist/native/definitions.js +0 -0
- package/dist/native/foldable/fold-state.d.ts +0 -5
- package/dist/native/foldable/fold-state.d.ts.map +0 -1
- package/dist/native/foldable/fold-state.js +0 -14
- package/dist/native/foldable/fold-state.js.map +0 -1
- package/dist/native/foldable/types.d.ts +0 -12
- package/dist/native/foldable/types.d.ts.map +0 -1
- package/dist/native/foldable/types.js +0 -0
- package/dist/native/index.d.ts +0 -11
- package/dist/native/index.d.ts.map +0 -1
- package/dist/native/index.js +0 -267
- package/dist/native/index.js.map +0 -1
- package/dist/native/overlays/content.d.ts +0 -4
- package/dist/native/overlays/content.d.ts.map +0 -1
- package/dist/native/overlays/content.js +0 -51
- package/dist/native/overlays/content.js.map +0 -1
- package/dist/native/overlays/controller.d.ts +0 -8
- package/dist/native/overlays/controller.d.ts.map +0 -1
- package/dist/native/overlays/controller.js +0 -285
- package/dist/native/overlays/controller.js.map +0 -1
- package/dist/native/overlays/dialog-animation.d.ts +0 -9
- package/dist/native/overlays/dialog-animation.d.ts.map +0 -1
- package/dist/native/overlays/dialog-animation.js +0 -53
- package/dist/native/overlays/dialog-animation.js.map +0 -1
- package/dist/native/overlays/dismiss-animation.d.ts +0 -4
- package/dist/native/overlays/dismiss-animation.d.ts.map +0 -1
- package/dist/native/overlays/dismiss-animation.js +0 -18
- package/dist/native/overlays/dismiss-animation.js.map +0 -1
- package/dist/native/overlays/focus.d.ts +0 -5
- package/dist/native/overlays/focus.d.ts.map +0 -1
- package/dist/native/overlays/focus.js +0 -59
- package/dist/native/overlays/focus.js.map +0 -1
- package/dist/native/overlays/popover.d.ts +0 -12
- package/dist/native/overlays/popover.d.ts.map +0 -1
- package/dist/native/overlays/popover.js +0 -110
- package/dist/native/overlays/popover.js.map +0 -1
- package/dist/native/overlays/styles.d.ts +0 -11
- package/dist/native/overlays/styles.d.ts.map +0 -1
- package/dist/native/overlays/styles.js +0 -167
- package/dist/native/overlays/styles.js.map +0 -1
- package/dist/native/prehide.d.ts +0 -7
- package/dist/native/prehide.d.ts.map +0 -1
- package/dist/native/prehide.js +0 -230
- package/dist/native/prehide.js.map +0 -1
- package/dist/native/runtime.d.ts +0 -7
- package/dist/native/runtime.d.ts.map +0 -1
- package/dist/native/runtime.js +0 -710
- package/dist/native/runtime.js.map +0 -1
- package/dist/native/shared/bridge.d.ts +0 -6
- package/dist/native/shared/bridge.d.ts.map +0 -1
- package/dist/native/shared/bridge.js +0 -18
- package/dist/native/shared/bridge.js.map +0 -1
- package/dist/native/shared/candidate.d.ts +0 -21
- package/dist/native/shared/candidate.d.ts.map +0 -1
- package/dist/native/shared/candidate.js +0 -98
- package/dist/native/shared/candidate.js.map +0 -1
- package/dist/native/shared/crossfade.d.ts +0 -12
- package/dist/native/shared/crossfade.d.ts.map +0 -1
- package/dist/native/shared/crossfade.js +0 -67
- package/dist/native/shared/crossfade.js.map +0 -1
- package/dist/native/shared/dom.d.ts +0 -46
- package/dist/native/shared/dom.d.ts.map +0 -1
- package/dist/native/shared/dom.js +0 -172
- package/dist/native/shared/dom.js.map +0 -1
- package/dist/native/shared/events.d.ts +0 -11
- package/dist/native/shared/events.d.ts.map +0 -1
- package/dist/native/shared/events.js +0 -13
- package/dist/native/shared/events.js.map +0 -1
- package/dist/native/shared/icons.d.ts +0 -8
- package/dist/native/shared/icons.d.ts.map +0 -1
- package/dist/native/shared/icons.js +0 -61
- package/dist/native/shared/icons.js.map +0 -1
- package/dist/native/shared/modal.d.ts +0 -10
- package/dist/native/shared/modal.d.ts.map +0 -1
- package/dist/native/shared/modal.js +0 -160
- package/dist/native/shared/modal.js.map +0 -1
- package/dist/native/shared/projection-id.d.ts +0 -4
- package/dist/native/shared/projection-id.d.ts.map +0 -1
- package/dist/native/shared/projection-id.js +0 -7
- package/dist/native/shared/projection-id.js.map +0 -1
- package/dist/native/shared/vertical-bars-geometry.d.ts +0 -10
- package/dist/native/shared/vertical-bars-geometry.d.ts.map +0 -1
- package/dist/native/shared/vertical-bars-geometry.js +0 -85
- package/dist/native/shared/vertical-bars-geometry.js.map +0 -1
- package/dist/native/vertical-bars-web-search.d.ts +0 -10
- package/dist/native/vertical-bars-web-search.d.ts.map +0 -1
- package/dist/native/vertical-bars-web-search.js +0 -90
- package/dist/native/vertical-bars-web-search.js.map +0 -1
- package/dist/native/vertical-bars-web.d.ts +0 -5
- package/dist/native/vertical-bars-web.d.ts.map +0 -1
- package/dist/native/vertical-bars-web.js +0 -411
- package/dist/native/vertical-bars-web.js.map +0 -1
- package/dist/native-integration/index.d.ts +0 -23
- package/dist/native-integration/index.d.ts.map +0 -1
- package/dist/native-integration/index.js.map +0 -1
- package/dist/native-integration/transition.d.ts +0 -5
- package/dist/native-integration/transition.d.ts.map +0 -1
- package/dist/native-integration/transition.js +0 -16
- package/dist/native-integration/transition.js.map +0 -1
- package/dist/vertical-bars.d.ts +0 -5
- package/dist/vertical-bars.js +0 -4
- package/docs/e2e-testing.md +0 -51
- package/docs/feedback.md +0 -65
- package/docs/iphone-duo-with-original-theme.md +0 -158
- package/docs/native-ui-shell.md +0 -325
- package/docs/vertical-bars.md +0 -300
- package/ios/Sources/IonicNativeUIShellPlugin/Components/ShellButton.swift +0 -71
- package/ios/Sources/IonicNativeUIShellPlugin/Components/ShellButtons.swift +0 -24
- package/ios/Sources/IonicNativeUIShellPlugin/Components/ShellComponents.swift +0 -18
- package/ios/Sources/IonicNativeUIShellPlugin/Components/ShellFab.swift +0 -80
- package/ios/Sources/IonicNativeUIShellPlugin/Components/ShellSearchController.swift +0 -432
- package/ios/Sources/IonicNativeUIShellPlugin/Components/ShellSegment.swift +0 -91
- package/ios/Sources/IonicNativeUIShellPlugin/Components/ShellTabBar.swift +0 -218
- package/ios/Sources/IonicNativeUIShellPlugin/Components/ShellVerticalBars.swift +0 -565
- package/ios/Sources/IonicNativeUIShellPlugin/Components/ShellVerticalSearch.swift +0 -118
- package/ios/Sources/IonicNativeUIShellPlugin/IonicNativeUIShellPlugin.swift +0 -502
- package/ios/Sources/IonicNativeUIShellPlugin/Overlays/ShellOverlayController.swift +0 -119
- package/ios/Sources/IonicNativeUIShellPlugin/Overlays/ShellOverlayHost.swift +0 -75
- package/ios/Sources/IonicNativeUIShellPlugin/Shared/ShellCrossfade.swift +0 -35
- package/ios/Sources/IonicNativeUIShellPlugin/Shared/ShellHost.swift +0 -8
- package/ios/Sources/IonicNativeUIShellPlugin/Shared/ShellRendering.swift +0 -27
- package/ios/Sources/IonicNativeUIShellPlugin/Shared/ShellSnapshot.swift +0 -135
- package/ios/Sources/IonicNativeUIShellPlugin/Shared/ShellVerticalBarsGeometry.swift +0 -52
- package/ios/Tests/IonicNativeUIShellPluginTests/ShellSnapshotTests.swift +0 -788
- package/src/native/components/index.ts +0 -53
- package/src/native/components/ion-back-button.ts +0 -19
- package/src/native/components/ion-button.ts +0 -24
- package/src/native/components/ion-buttons.ts +0 -38
- package/src/native/components/ion-fab.ts +0 -151
- package/src/native/components/ion-menu-button.ts +0 -24
- package/src/native/components/ion-segment.ts +0 -27
- package/src/native/components/ion-tab-bar.ts +0 -50
- package/src/native/components/searchable-tabs.ts +0 -459
- package/src/native/definitions.ts +0 -218
- package/src/native/foldable/fold-state.ts +0 -9
- package/src/native/foldable/types.ts +0 -4
- package/src/native/index.ts +0 -315
- package/src/native/overlays/content.ts +0 -51
- package/src/native/overlays/controller.ts +0 -349
- package/src/native/overlays/dialog-animation.ts +0 -53
- package/src/native/overlays/dismiss-animation.ts +0 -15
- package/src/native/overlays/focus.ts +0 -64
- package/src/native/overlays/popover.ts +0 -120
- package/src/native/overlays/styles.ts +0 -181
- package/src/native/prehide.ts +0 -265
- package/src/native/runtime.ts +0 -885
- package/src/native/shared/bridge.ts +0 -18
- package/src/native/shared/candidate.ts +0 -150
- package/src/native/shared/crossfade.ts +0 -67
- package/src/native/shared/dom.ts +0 -286
- package/src/native/shared/events.ts +0 -8
- package/src/native/shared/icons.ts +0 -57
- package/src/native/shared/modal.ts +0 -157
- package/src/native/shared/projection-id.ts +0 -2
- package/src/native/shared/vertical-bars-geometry.ts +0 -80
- package/src/native/vertical-bars-web-search.ts +0 -86
- package/src/native/vertical-bars-web.ts +0 -485
- package/src/native-integration/transition.ts +0 -15
- package/src/vertical-bars.ts +0 -11
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":["button","buttons","backButton","menuButton","tabBar","segment","fab"],"sources":["../../../src/native/components/index.ts"],"mappings":";;;;;;;;;;qBAYa,6BAAUA,6BAAAC,8BAAAC,kCAAAC,kCAAAC,8BAAAC,8BAAAC;YACX,iCAAiC;qBAChC;qBAIA;qBAIA;qBAQA,0BAAuB,SAAA;qBAEvB,gBAAiB,SAAS,aAAa,IAAI,UAAU,UAAS,+BAAkC"}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { isDisabledButtonGroupChild, isVerticalBarsSource, visible, withoutPrehide } from "../shared/dom.js";
|
|
2
|
-
import { ion_button_exports } from "./ion-button.js";
|
|
3
|
-
import { ion_menu_button_exports } from "./ion-menu-button.js";
|
|
4
|
-
import { ion_buttons_exports } from "./ion-buttons.js";
|
|
5
|
-
import { ion_back_button_exports } from "./ion-back-button.js";
|
|
6
|
-
import { ion_tab_bar_exports } from "./ion-tab-bar.js";
|
|
7
|
-
import { ion_segment_exports } from "./ion-segment.js";
|
|
8
|
-
import { ion_fab_exports } from "./ion-fab.js";
|
|
9
|
-
//#region src/native/components/index.ts
|
|
10
|
-
const components = [
|
|
11
|
-
ion_button_exports,
|
|
12
|
-
ion_buttons_exports,
|
|
13
|
-
ion_back_button_exports,
|
|
14
|
-
ion_menu_button_exports,
|
|
15
|
-
ion_tab_bar_exports,
|
|
16
|
-
ion_segment_exports,
|
|
17
|
-
ion_fab_exports
|
|
18
|
-
];
|
|
19
|
-
const selector = components.map((component) => "selector" in component ? component.selector : component.tag).filter(Boolean).join(", ");
|
|
20
|
-
const shadowSelector = ["ion-icon", ...components.flatMap((component) => "shadowSelector" in component ? [component.shadowSelector] : [])].join(", ");
|
|
21
|
-
const motionSelector = [
|
|
22
|
-
".ion-page",
|
|
23
|
-
"ion-header",
|
|
24
|
-
"ion-footer",
|
|
25
|
-
"ion-toolbar",
|
|
26
|
-
...components.filter((component) => "tracksMotion" in component && component.tracksMotion).map((component) => component.tag)
|
|
27
|
-
].join(", ");
|
|
28
|
-
const isVerticalBarsCandidate = isVerticalBarsSource;
|
|
29
|
-
const readCandidate = (element, id, options = {}) => {
|
|
30
|
-
const verticalBars = isVerticalBarsCandidate(element);
|
|
31
|
-
if (!element.classList.contains("ios") && !verticalBars || !visible(element, verticalBars) || element.closest("ion-popover") || element.closest("ion-modal") && !verticalBars) return;
|
|
32
|
-
const style = getComputedStyle(element);
|
|
33
|
-
if (!isDisabledButtonGroupChild(element) && !style.getPropertyValue("--ios-theme-glass-background-rgb").trim() && !style.getPropertyValue("--ios26-glass-background-rgb").trim() && !verticalBars) return;
|
|
34
|
-
if (element.contains(element.ownerDocument.activeElement)) return;
|
|
35
|
-
return withoutPrehide(element, () => components.find((component) => component.tag === element.localName)?.read(element, id, options));
|
|
36
|
-
};
|
|
37
|
-
//#endregion
|
|
38
|
-
export { components, isVerticalBarsCandidate, motionSelector, readCandidate, selector, shadowSelector };
|
|
39
|
-
|
|
40
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["button","buttons","backButton","menuButton","tabBar","segment","fab"],"sources":["../../../src/native/components/index.ts"],"sourcesContent":["import type { VerticalControlAreaOptions } from '../definitions';\nimport * as button from './ion-button';\nimport * as buttons from './ion-buttons';\nimport * as backButton from './ion-back-button';\nimport * as menuButton from './ion-menu-button';\nimport * as tabBar from './ion-tab-bar';\nimport * as segment from './ion-segment';\nimport * as fab from './ion-fab';\nimport { isDisabledButtonGroupChild, isVerticalBarsSource, visible, withoutPrehide } from '../shared/dom';\nimport type { Candidate, Identify } from '../shared/candidate';\n\n// Static composition only. Each component declares its own tag, discovery and reader.\nexport const components = [button, buttons, backButton, menuButton, tabBar, segment, fab] as const;\nexport type NativeUIShellComponent = (typeof components)[number]['tag'];\nexport const selector = components\n .map((component) => ('selector' in component ? component.selector : component.tag))\n .filter(Boolean)\n .join(', ');\nexport const shadowSelector = [\n 'ion-icon',\n ...components.flatMap((component) => ('shadowSelector' in component ? [component.shadowSelector] : [])),\n].join(', ');\nexport const motionSelector = [\n '.ion-page',\n 'ion-header',\n 'ion-footer',\n 'ion-toolbar',\n ...components.filter((component) => 'tracksMotion' in component && component.tracksMotion).map((component) => component.tag),\n].join(', ');\n\nexport const isVerticalBarsCandidate = isVerticalBarsSource;\n\nexport const readCandidate = (element: HTMLElement, id: Identify, options: VerticalControlAreaOptions = {}): Candidate | undefined => {\n const verticalBars = isVerticalBarsCandidate(element);\n if (\n (!element.classList.contains('ios') && !verticalBars) ||\n !visible(element, verticalBars) ||\n element.closest('ion-popover') ||\n (element.closest('ion-modal') && !verticalBars)\n )\n return;\n const style = getComputedStyle(element);\n if (\n !isDisabledButtonGroupChild(element) &&\n !style.getPropertyValue('--ios-theme-glass-background-rgb').trim() &&\n !style.getPropertyValue('--ios26-glass-background-rgb').trim() &&\n !verticalBars\n )\n return;\n if (element.contains(element.ownerDocument.activeElement)) return;\n // Read icon and control geometry before restoring prehide, which can collapse the toolbar.\n return withoutPrehide(element, () => components.find((component) => component.tag === element.localName)?.read(element, id, options));\n};\n"],"mappings":";;;;;;;;;AAYA,MAAa,aAAa;CAACA;CAAQC;CAASC;CAAYC;CAAYC;CAAQC;CAASC;AAAG;AAExF,MAAa,WAAW,WACrB,KAAK,cAAe,cAAc,YAAY,UAAU,WAAW,UAAU,GAAI,CAAC,CAClF,OAAO,OAAO,CAAC,CACf,KAAK,IAAI;AACZ,MAAa,iBAAiB,CAC5B,YACA,GAAG,WAAW,SAAS,cAAe,oBAAoB,YAAY,CAAC,UAAU,cAAc,IAAI,CAAC,CAAE,CACxG,CAAC,CAAC,KAAK,IAAI;AACX,MAAa,iBAAiB;CAC5B;CACA;CACA;CACA;CACA,GAAG,WAAW,QAAQ,cAAc,kBAAkB,aAAa,UAAU,YAAY,CAAC,CAAC,KAAK,cAAc,UAAU,GAAG;AAC7H,CAAC,CAAC,KAAK,IAAI;AAEX,MAAa,0BAA0B;AAEvC,MAAa,iBAAiB,SAAsB,IAAc,UAAsC,CAAC,MAA6B;CACpI,MAAM,eAAe,wBAAwB,OAAO;CACpD,IACG,CAAC,QAAQ,UAAU,SAAS,KAAK,KAAK,CAAC,gBACxC,CAAC,QAAQ,SAAS,YAAY,KAC9B,QAAQ,QAAQ,aAAa,KAC5B,QAAQ,QAAQ,WAAW,KAAK,CAAC,cAElC;CACF,MAAM,QAAQ,iBAAiB,OAAO;CACtC,IACE,CAAC,2BAA2B,OAAO,KACnC,CAAC,MAAM,iBAAiB,kCAAkC,CAAC,CAAC,KAAK,KACjE,CAAC,MAAM,iBAAiB,8BAA8B,CAAC,CAAC,KAAK,KAC7D,CAAC,cAED;CACF,IAAI,QAAQ,SAAS,QAAQ,cAAc,aAAa,GAAG;CAE3D,OAAO,eAAe,eAAe,WAAW,MAAM,cAAc,UAAU,QAAQ,QAAQ,SAAS,CAAC,EAAE,KAAK,SAAS,IAAI,OAAO,CAAC;AACtI"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { Candidate, Identify } from "../shared/candidate.js";
|
|
2
|
-
declare namespace ion_back_button_d_exports {
|
|
3
|
-
export { read, tag };
|
|
4
|
-
}
|
|
5
|
-
export declare const tag = "ion-back-button";
|
|
6
|
-
export declare const read: (element: HTMLElement, id: Identify) => Candidate | undefined;
|
|
7
|
-
//#endregion
|
|
8
|
-
export { ion_back_button_d_exports };
|
|
9
|
-
//# sourceMappingURL=ion-back-button.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ion-back-button.d.ts","names":[],"sources":["../../../src/native/components/ion-back-button.ts"],"mappings":";;;;qBAIa;qBAEA,OAAQ,SAAS,aAAa,IAAI,aAAW"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { __exportAll } from "../../_virtual/_rolldown/runtime.js";
|
|
2
|
-
import { inFixedToolbar, isVerticalBarsSource } from "../shared/dom.js";
|
|
3
|
-
import { appendItem, createCandidate } from "../shared/candidate.js";
|
|
4
|
-
//#region src/native/components/ion-back-button.ts
|
|
5
|
-
var ion_back_button_exports = /* @__PURE__ */ __exportAll({
|
|
6
|
-
read: () => read,
|
|
7
|
-
tag: () => tag
|
|
8
|
-
});
|
|
9
|
-
const tag = "ion-back-button";
|
|
10
|
-
const read = (element, id) => {
|
|
11
|
-
const button = element;
|
|
12
|
-
if (!button.shadowRoot || button.icon !== void 0 || button.color !== void 0 || !isVerticalBarsSource(element) && !inFixedToolbar(element)) return;
|
|
13
|
-
const candidate = createCandidate(element, tag, id);
|
|
14
|
-
const label = button.shadowRoot.querySelector("[part=\"text\"]")?.textContent?.trim() ?? "";
|
|
15
|
-
return appendItem(candidate, element, id, button.shadowRoot, label) ? candidate : void 0;
|
|
16
|
-
};
|
|
17
|
-
//#endregion
|
|
18
|
-
export { ion_back_button_exports, read, tag };
|
|
19
|
-
|
|
20
|
-
//# sourceMappingURL=ion-back-button.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ion-back-button.js","names":[],"sources":["../../../src/native/components/ion-back-button.ts"],"sourcesContent":["import { createCandidate, appendItem } from '../shared/candidate';\nimport type { Candidate, Identify } from '../shared/candidate';\nimport { inFixedToolbar, isVerticalBarsSource } from '../shared/dom';\n\nexport const tag = 'ion-back-button';\n\nexport const read = (element: HTMLElement, id: Identify): Candidate | undefined => {\n const button = element as HTMLIonBackButtonElement;\n if (\n !button.shadowRoot ||\n button.icon !== undefined ||\n button.color !== undefined ||\n (!isVerticalBarsSource(element) && !inFixedToolbar(element))\n )\n return;\n const candidate = createCandidate(element, tag, id);\n const label = button.shadowRoot.querySelector('[part=\"text\"]')?.textContent?.trim() ?? '';\n return appendItem(candidate, element, id, button.shadowRoot, label) ? candidate : undefined;\n};\n"],"mappings":";;;;;;;;AAIA,MAAa,MAAM;AAEnB,MAAa,QAAQ,SAAsB,OAAwC;CACjF,MAAM,SAAS;CACf,IACE,CAAC,OAAO,cACR,OAAO,SAAS,KAAA,KAChB,OAAO,UAAU,KAAA,KAChB,CAAC,qBAAqB,OAAO,KAAK,CAAC,eAAe,OAAO,GAE1D;CACF,MAAM,YAAY,gBAAgB,SAAS,KAAK,EAAE;CAClD,MAAM,QAAQ,OAAO,WAAW,cAAc,iBAAe,CAAC,EAAE,aAAa,KAAK,KAAK;CACvF,OAAO,WAAW,WAAW,SAAS,IAAI,OAAO,YAAY,KAAK,IAAI,YAAY,KAAA;AACpF"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { VerticalControlAreaOptions } from "../definitions.js";
|
|
2
|
-
import { Candidate, Identify } from "../shared/candidate.js";
|
|
3
|
-
declare namespace ion_button_d_exports {
|
|
4
|
-
export { read, tag };
|
|
5
|
-
}
|
|
6
|
-
export declare const tag = "ion-button";
|
|
7
|
-
export declare const read: (element: HTMLElement, id: Identify, options?: VerticalControlAreaOptions) => Candidate | undefined;
|
|
8
|
-
//#endregion
|
|
9
|
-
export { ion_button_d_exports };
|
|
10
|
-
//# sourceMappingURL=ion-button.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ion-button.d.ts","names":[],"sources":["../../../src/native/components/ion-button.ts"],"mappings":";;;;;qBAMa;qBAEA,OAAQ,SAAS,aAAa,IAAI,UAAU,UAAS,+BAAkC"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { __exportAll } from "../../_virtual/_rolldown/runtime.js";
|
|
2
|
-
import { modalUsesVerticalBars } from "../shared/modal.js";
|
|
3
|
-
import { inFixedToolbar, isVerticalBarsToolbarAction, isVerticalBarsToolbarGroup } from "../shared/dom.js";
|
|
4
|
-
import { appendItem, createCandidate } from "../shared/candidate.js";
|
|
5
|
-
//#region src/native/components/ion-button.ts
|
|
6
|
-
var ion_button_exports = /* @__PURE__ */ __exportAll({
|
|
7
|
-
read: () => read,
|
|
8
|
-
tag: () => tag
|
|
9
|
-
});
|
|
10
|
-
const tag = "ion-button";
|
|
11
|
-
const read = (element, id, options = {}) => {
|
|
12
|
-
const button = element;
|
|
13
|
-
const verticalBars = !element.closest("ion-menu, ion-popover") && modalUsesVerticalBars(element) && !!element.closest("ion-app.ios-theme-vertical-bars");
|
|
14
|
-
if (verticalBars && element.parentElement && isVerticalBarsToolbarGroup(element.parentElement)) return;
|
|
15
|
-
const fill = button.fill ?? "default";
|
|
16
|
-
if (!inFixedToolbar(element) || verticalBars && !isVerticalBarsToolbarAction(element) || !verticalBars && fill !== "default" || !verticalBars && button.classList.contains("ion-color")) return;
|
|
17
|
-
const candidate = createCandidate(element, tag, id, options);
|
|
18
|
-
return appendItem(candidate, element, id) ? candidate : void 0;
|
|
19
|
-
};
|
|
20
|
-
//#endregion
|
|
21
|
-
export { ion_button_exports, read, tag };
|
|
22
|
-
|
|
23
|
-
//# sourceMappingURL=ion-button.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ion-button.js","names":[],"sources":["../../../src/native/components/ion-button.ts"],"sourcesContent":["import type { VerticalControlAreaOptions } from '../definitions';\nimport { modalUsesVerticalBars } from '../shared/modal';\nimport { createCandidate, appendItem } from '../shared/candidate';\nimport type { Candidate, Identify } from '../shared/candidate';\nimport { inFixedToolbar, isVerticalBarsToolbarAction, isVerticalBarsToolbarGroup } from '../shared/dom';\n\nexport const tag = 'ion-button';\n\nexport const read = (element: HTMLElement, id: Identify, options: VerticalControlAreaOptions = {}): Candidate | undefined => {\n const button = element as HTMLIonButtonElement;\n const verticalBars =\n !element.closest('ion-menu, ion-popover') && modalUsesVerticalBars(element) && !!element.closest('ion-app.ios-theme-vertical-bars');\n if (verticalBars && element.parentElement && isVerticalBarsToolbarGroup(element.parentElement)) return;\n const fill = button.fill ?? 'default';\n if (\n !inFixedToolbar(element) ||\n (verticalBars && !isVerticalBarsToolbarAction(element)) ||\n (!verticalBars && fill !== 'default') ||\n (!verticalBars && button.classList.contains('ion-color'))\n )\n return;\n const candidate = createCandidate(element, tag, id, options);\n return appendItem(candidate, element, id) ? candidate : undefined;\n};\n"],"mappings":";;;;;;;;;AAMA,MAAa,MAAM;AAEnB,MAAa,QAAQ,SAAsB,IAAc,UAAsC,CAAC,MAA6B;CAC3H,MAAM,SAAS;CACf,MAAM,eACJ,CAAC,QAAQ,QAAQ,uBAAuB,KAAK,sBAAsB,OAAO,KAAK,CAAC,CAAC,QAAQ,QAAQ,iCAAiC;CACpI,IAAI,gBAAgB,QAAQ,iBAAiB,2BAA2B,QAAQ,aAAa,GAAG;CAChG,MAAM,OAAO,OAAO,QAAQ;CAC5B,IACE,CAAC,eAAe,OAAO,KACtB,gBAAgB,CAAC,4BAA4B,OAAO,KACpD,CAAC,gBAAgB,SAAS,aAC1B,CAAC,gBAAgB,OAAO,UAAU,SAAS,WAAW,GAEvD;CACF,MAAM,YAAY,gBAAgB,SAAS,KAAK,IAAI,OAAO;CAC3D,OAAO,WAAW,WAAW,SAAS,EAAE,IAAI,YAAY,KAAA;AAC1D"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { VerticalControlAreaOptions } from "../definitions.js";
|
|
2
|
-
import { Candidate, Identify } from "../shared/candidate.js";
|
|
3
|
-
declare namespace ion_buttons_d_exports {
|
|
4
|
-
export { read, tag, tracksMotion };
|
|
5
|
-
}
|
|
6
|
-
export declare const tag = "ion-buttons";
|
|
7
|
-
export declare const tracksMotion = true;
|
|
8
|
-
export declare const read: (element: HTMLElement, id: Identify, options?: VerticalControlAreaOptions) => Candidate | undefined;
|
|
9
|
-
//#endregion
|
|
10
|
-
export { ion_buttons_d_exports };
|
|
11
|
-
//# sourceMappingURL=ion-buttons.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ion-buttons.d.ts","names":[],"sources":["../../../src/native/components/ion-buttons.ts"],"mappings":";;;;;qBAOa;qBACA;qBAEA,OAAQ,SAAS,aAAa,IAAI,UAAU,UAAS,+BAAkC"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { __exportAll } from "../../_virtual/_rolldown/runtime.js";
|
|
2
|
-
import { modalUsesVerticalBars } from "../shared/modal.js";
|
|
3
|
-
import { childElements, inFixedToolbar, isVerticalBarsToolbarGroup, verticalBarsToolbarActions } from "../shared/dom.js";
|
|
4
|
-
import { appendItem, createCandidate } from "../shared/candidate.js";
|
|
5
|
-
import { append, read as read$1 } from "./ion-menu-button.js";
|
|
6
|
-
//#region src/native/components/ion-buttons.ts
|
|
7
|
-
var ion_buttons_exports = /* @__PURE__ */ __exportAll({
|
|
8
|
-
read: () => read,
|
|
9
|
-
tag: () => tag,
|
|
10
|
-
tracksMotion: () => true
|
|
11
|
-
});
|
|
12
|
-
const tag = "ion-buttons";
|
|
13
|
-
const tracksMotion = true;
|
|
14
|
-
const read = (element, id, options = {}) => {
|
|
15
|
-
if (!inFixedToolbar(element)) return;
|
|
16
|
-
let children = childElements(element);
|
|
17
|
-
if (children.length === 1) return read$1(element, id, options);
|
|
18
|
-
const verticalBars = !element.closest("ion-menu, ion-popover") && modalUsesVerticalBars(element) && !!element.closest("ion-app.ios-theme-vertical-bars");
|
|
19
|
-
if (verticalBars && !isVerticalBarsToolbarGroup(element)) return;
|
|
20
|
-
if (verticalBars) children = verticalBarsToolbarActions(element);
|
|
21
|
-
if (!children.length || children.some((child) => !child.matches(`ion-menu-button${verticalBars ? "" : ".ios"}`) && (!child.matches(`ion-button${verticalBars ? "" : ".ios.button-clear"}`) || !verticalBars && child.fill !== "clear"))) return;
|
|
22
|
-
const candidate = createCandidate(element, tag, id, options);
|
|
23
|
-
if (verticalBars && children.length !== childElements(element).length) candidate.sources = children;
|
|
24
|
-
for (const child of children) if (!(child.matches("ion-menu-button") ? append(candidate, child, id) : appendItem(candidate, child, id))) return;
|
|
25
|
-
return candidate;
|
|
26
|
-
};
|
|
27
|
-
//#endregion
|
|
28
|
-
export { ion_buttons_exports, read, tag, tracksMotion };
|
|
29
|
-
|
|
30
|
-
//# sourceMappingURL=ion-buttons.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ion-buttons.js","names":["menuButton.read","menuButton.append"],"sources":["../../../src/native/components/ion-buttons.ts"],"sourcesContent":["import type { VerticalControlAreaOptions } from '../definitions';\nimport { modalUsesVerticalBars } from '../shared/modal';\nimport { createCandidate, appendItem } from '../shared/candidate';\nimport type { Candidate, Identify } from '../shared/candidate';\nimport { childElements, verticalBarsToolbarActions, inFixedToolbar, isVerticalBarsToolbarGroup } from '../shared/dom';\nimport * as menuButton from './ion-menu-button';\n\nexport const tag = 'ion-buttons';\nexport const tracksMotion = true;\n\nexport const read = (element: HTMLElement, id: Identify, options: VerticalControlAreaOptions = {}): Candidate | undefined => {\n if (!inFixedToolbar(element)) return;\n let children = childElements(element);\n if (children.length === 1) return menuButton.read(element, id, options);\n const verticalBars =\n !element.closest('ion-menu, ion-popover') && modalUsesVerticalBars(element) && !!element.closest('ion-app.ios-theme-vertical-bars');\n if (verticalBars && !isVerticalBarsToolbarGroup(element)) return;\n if (verticalBars) children = verticalBarsToolbarActions(element);\n if (\n !children.length ||\n children.some(\n (child) =>\n !child.matches(`${menuButton.tag}${verticalBars ? '' : '.ios'}`) &&\n (!child.matches(`ion-button${verticalBars ? '' : '.ios.button-clear'}`) ||\n (!verticalBars && (child as HTMLIonButtonElement).fill !== 'clear')),\n )\n )\n return;\n const candidate = createCandidate(element, tag, id, options);\n if (verticalBars && children.length !== childElements(element).length) candidate.sources = children;\n for (const child of children) {\n const supported = child.matches(menuButton.tag)\n ? menuButton.append(candidate, child as HTMLIonMenuButtonElement, id)\n : appendItem(candidate, child, id);\n if (!supported) return;\n }\n return candidate;\n};\n"],"mappings":";;;;;;;;;;;AAOA,MAAa,MAAM;AACnB,MAAa,eAAe;AAE5B,MAAa,QAAQ,SAAsB,IAAc,UAAsC,CAAC,MAA6B;CAC3H,IAAI,CAAC,eAAe,OAAO,GAAG;CAC9B,IAAI,WAAW,cAAc,OAAO;CACpC,IAAI,SAAS,WAAW,GAAG,OAAOA,OAAgB,SAAS,IAAI,OAAO;CACtE,MAAM,eACJ,CAAC,QAAQ,QAAQ,uBAAuB,KAAK,sBAAsB,OAAO,KAAK,CAAC,CAAC,QAAQ,QAAQ,iCAAiC;CACpI,IAAI,gBAAgB,CAAC,2BAA2B,OAAO,GAAG;CAC1D,IAAI,cAAc,WAAW,2BAA2B,OAAO;CAC/D,IACE,CAAC,SAAS,UACV,SAAS,MACN,UACC,CAAC,MAAM,QAAQ,kBAAoB,eAAe,KAAK,QAAQ,MAC9D,CAAC,MAAM,QAAQ,aAAa,eAAe,KAAK,qBAAqB,KACnE,CAAC,gBAAiB,MAA+B,SAAS,QACjE,GAEA;CACF,MAAM,YAAY,gBAAgB,SAAS,KAAK,IAAI,OAAO;CAC3D,IAAI,gBAAgB,SAAS,WAAW,cAAc,OAAO,CAAC,CAAC,QAAQ,UAAU,UAAU;CAC3F,KAAK,MAAM,SAAS,UAIlB,IAAI,EAHc,MAAM,QAAQ,iBAAc,IAC1CC,OAAkB,WAAW,OAAmC,EAAE,IAClE,WAAW,WAAW,OAAO,EAAE,IACnB;CAElB,OAAO;AACT"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { Candidate } from "../shared/candidate.js";
|
|
2
|
-
declare namespace ion_fab_d_exports {
|
|
3
|
-
export { read, shadowSelector, tag };
|
|
4
|
-
}
|
|
5
|
-
export declare const tag = "ion-fab";
|
|
6
|
-
export declare const shadowSelector = "ion-fab-button, ion-fab-list";
|
|
7
|
-
export declare const read: (fab: HTMLElement, id: (element: HTMLElement) => string) => Candidate | undefined;
|
|
8
|
-
//#endregion
|
|
9
|
-
export { ion_fab_d_exports };
|
|
10
|
-
//# sourceMappingURL=ion-fab.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ion-fab.d.ts","names":[],"sources":["../../../src/native/components/ion-fab.ts"],"mappings":";;;;qBAKa;qBACA;qBAOA,OAAQ,KAAK,aAAa,KAAK,SAAS,2BAAyB"}
|
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
import { __exportAll } from "../../_virtual/_rolldown/runtime.js";
|
|
2
|
-
import { childElements, excluded, isDark, text } from "../shared/dom.js";
|
|
3
|
-
import { iconSource } from "../shared/icons.js";
|
|
4
|
-
//#region src/native/components/ion-fab.ts
|
|
5
|
-
var ion_fab_exports = /* @__PURE__ */ __exportAll({
|
|
6
|
-
read: () => read,
|
|
7
|
-
shadowSelector: () => shadowSelector,
|
|
8
|
-
tag: () => tag
|
|
9
|
-
});
|
|
10
|
-
const tag = "ion-fab";
|
|
11
|
-
const shadowSelector = "ion-fab-button, ion-fab-list";
|
|
12
|
-
const hasHostMotion = (style) => style.animationName !== "none" || style.transitionDuration.split(",").some((value) => parseFloat(value) > 0);
|
|
13
|
-
const read = (fab, id) => {
|
|
14
|
-
if (fab.slot !== "fixed" || !fab.parentElement?.matches("ion-content") || fab.contains(fab.ownerDocument.activeElement)) return;
|
|
15
|
-
const children = childElements(fab);
|
|
16
|
-
const main = children.filter((child) => child.matches("ion-fab-button"));
|
|
17
|
-
const lists = children.filter((child) => child.matches("ion-fab-list"));
|
|
18
|
-
if (main.length !== 1 || main.length + lists.length !== children.length) return;
|
|
19
|
-
if (lists.some((list) => list.closest(excluded) || childElements(list).some((child) => !child.matches("ion-fab-button")))) return;
|
|
20
|
-
const buttons = [main[0], ...lists.flatMap((list) => childElements(list))];
|
|
21
|
-
const style = getComputedStyle(fab);
|
|
22
|
-
if (hasHostMotion(style)) return;
|
|
23
|
-
const transform = new DOMMatrixReadOnly(style.transform);
|
|
24
|
-
if (!transform.is2D || transform.a !== 1 || transform.d !== 1 || transform.b || transform.c) return;
|
|
25
|
-
const candidate = {
|
|
26
|
-
element: fab,
|
|
27
|
-
control: {
|
|
28
|
-
id: id(fab),
|
|
29
|
-
kind: tag,
|
|
30
|
-
x: 0,
|
|
31
|
-
y: 0,
|
|
32
|
-
width: innerWidth,
|
|
33
|
-
height: innerHeight,
|
|
34
|
-
dark: isDark(style),
|
|
35
|
-
rtl: style.direction === "rtl",
|
|
36
|
-
items: []
|
|
37
|
-
},
|
|
38
|
-
actions: /* @__PURE__ */ new Map(),
|
|
39
|
-
icons: []
|
|
40
|
-
};
|
|
41
|
-
for (const button of buttons) {
|
|
42
|
-
if (!button.classList.contains("ios") || button.closest(excluded) || button.color || button.type !== "button" || button.href) return;
|
|
43
|
-
if (button.querySelector("input, button, a, img, canvas, video, ion-spinner, ion-avatar, ion-badge")) return;
|
|
44
|
-
const native = button.shadowRoot?.querySelector("[part=native]");
|
|
45
|
-
if (!native) return;
|
|
46
|
-
const s = getComputedStyle(button), n = getComputedStyle(native);
|
|
47
|
-
const alpha = n.backgroundColor.startsWith("rgba(") ? Number(n.backgroundColor.slice(5, -1).split(",")[3]) : 1;
|
|
48
|
-
if (s.backgroundColor !== "rgba(0, 0, 0, 0)" || s.backgroundImage !== "none" || n.backgroundImage.includes("url(") || !n.backdropFilter.includes("blur") || !(alpha > 0 && alpha < 1)) return;
|
|
49
|
-
const width = parseFloat(s.width), height = parseFloat(s.height);
|
|
50
|
-
if (!(width > 0 && height > 0) || Math.abs(width - height) > .5 || !n.borderRadius.includes("50%")) return;
|
|
51
|
-
const list = button.parentElement?.matches("ion-fab-list") ? button.parentElement : void 0;
|
|
52
|
-
const listStyle = list && getComputedStyle(list);
|
|
53
|
-
const laidOut = s.display !== "none" && (!listStyle || listStyle.display !== "none");
|
|
54
|
-
const visible = laidOut && (!list || list.activated && button.show && listStyle.visibility === "visible" && Number(listStyle.opacity) > 0) && s.visibility === "visible" && Number(s.opacity) > 0;
|
|
55
|
-
const matrix = new DOMMatrixReadOnly(s.transform);
|
|
56
|
-
if (!matrix.is2D || matrix.b || matrix.c || matrix.e || matrix.f || matrix.a !== matrix.d || matrix.a < 0) return;
|
|
57
|
-
if (matrix.a !== 1 && (matrix.a !== 0 || !list || button.classList.contains("fab-button-show"))) return;
|
|
58
|
-
if (laidOut && !matrix.isIdentity) {
|
|
59
|
-
const origin = s.transformOrigin.split(" ").map(parseFloat);
|
|
60
|
-
if (Math.abs(origin[0] - width / 2) > .5 || Math.abs(origin[1] - height / 2) > .5) return;
|
|
61
|
-
}
|
|
62
|
-
if (hasHostMotion(s)) return;
|
|
63
|
-
if (listStyle) {
|
|
64
|
-
if (hasHostMotion(listStyle)) return;
|
|
65
|
-
const transform = new DOMMatrixReadOnly(listStyle.transform);
|
|
66
|
-
if (!transform.is2D || transform.a !== 1 || transform.d !== 1 || transform.b || transform.c) return;
|
|
67
|
-
}
|
|
68
|
-
const rect = button.getBoundingClientRect();
|
|
69
|
-
const x = laidOut ? rect.x + rect.width / 2 - width / 2 : 0;
|
|
70
|
-
const y = laidOut ? rect.y + rect.height / 2 - height / 2 : 0;
|
|
71
|
-
if (visible && (x < -1 || y < -1 || x + width > innerWidth + 1 || y + height > innerHeight + 1)) return;
|
|
72
|
-
const label = text(button);
|
|
73
|
-
const item = {
|
|
74
|
-
id: id(button),
|
|
75
|
-
x,
|
|
76
|
-
y,
|
|
77
|
-
width,
|
|
78
|
-
height,
|
|
79
|
-
label,
|
|
80
|
-
accessibilityLabel: button.getAttribute("aria-label") ?? native.getAttribute("aria-label") ?? label,
|
|
81
|
-
disabled: button.disabled || s.pointerEvents === "none",
|
|
82
|
-
selected: button.activated,
|
|
83
|
-
visible,
|
|
84
|
-
fontSize: parseFloat(s.fontSize),
|
|
85
|
-
fontWeight: parseInt(s.fontWeight, 10) || 400,
|
|
86
|
-
color: n.color
|
|
87
|
-
};
|
|
88
|
-
const normal = Array.from(button.querySelectorAll("ion-icon, svg"));
|
|
89
|
-
if (normal.length > 1) return;
|
|
90
|
-
const close = button.shadowRoot?.querySelector("ion-icon[part=close-icon]");
|
|
91
|
-
for (const [index, icon] of [normal[0], close].entries()) {
|
|
92
|
-
if (!icon) {
|
|
93
|
-
if (index === 1 || !label) return;
|
|
94
|
-
else continue;
|
|
95
|
-
}
|
|
96
|
-
const svg = icon.matches("svg") ? icon : icon.shadowRoot?.querySelector("svg");
|
|
97
|
-
if (!svg) return;
|
|
98
|
-
const iconStyle = getComputedStyle(icon);
|
|
99
|
-
const inner = icon.shadowRoot?.querySelector(".icon-inner");
|
|
100
|
-
if (index === 0 && inner && !new DOMMatrixReadOnly(iconStyle.transform).isIdentity) return;
|
|
101
|
-
const transform = new DOMMatrixReadOnly(inner ? getComputedStyle(inner).transform : iconStyle.transform);
|
|
102
|
-
const mirrored = transform.is2D && transform.a === -1 && transform.d === 1 && !transform.b && !transform.c && !transform.e && !transform.f;
|
|
103
|
-
if (index === 0 && !transform.isIdentity && !mirrored) return;
|
|
104
|
-
const source = iconSource(svg, index === 0 && mirrored);
|
|
105
|
-
const iconWidth = parseFloat(iconStyle.width), iconHeight = parseFloat(iconStyle.height);
|
|
106
|
-
const size = index === 1 ? parseFloat(iconStyle.fontSize) : iconWidth;
|
|
107
|
-
const h = index === 1 ? size : iconHeight;
|
|
108
|
-
if (!source || !(size > 0 && h > 0)) return;
|
|
109
|
-
if (index === 0) {
|
|
110
|
-
item.iconWidth = size;
|
|
111
|
-
item.iconHeight = h;
|
|
112
|
-
} else {
|
|
113
|
-
item.closeIconWidth = size;
|
|
114
|
-
item.closeIconHeight = h;
|
|
115
|
-
item.iconTransition = parseFloat(iconStyle.transitionDuration) * (iconStyle.transitionDuration.split(",")[0].trim().endsWith("ms") ? .001 : 1);
|
|
116
|
-
}
|
|
117
|
-
candidate.icons.push({
|
|
118
|
-
item,
|
|
119
|
-
source,
|
|
120
|
-
...index === 1 ? { field: "closeIcon" } : {}
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
if (!visible && !list) return;
|
|
124
|
-
candidate.control.items.push(item);
|
|
125
|
-
if (visible) candidate.actions.set(item.id, button);
|
|
126
|
-
}
|
|
127
|
-
return candidate;
|
|
128
|
-
};
|
|
129
|
-
//#endregion
|
|
130
|
-
export { ion_fab_exports, read, shadowSelector, tag };
|
|
131
|
-
|
|
132
|
-
//# sourceMappingURL=ion-fab.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ion-fab.js","names":[],"sources":["../../../src/native/components/ion-fab.ts"],"sourcesContent":["import type { Candidate } from '../shared/candidate';\nimport { childElements, excluded, isDark, text } from '../shared/dom';\nimport { iconSource } from '../shared/icons';\nimport type { ShellItem } from '../definitions';\n\nexport const tag = 'ion-fab';\nexport const shadowSelector = 'ion-fab-button, ion-fab-list';\n\nconst hasHostMotion = (style: CSSStyleDeclaration): boolean =>\n style.animationName !== 'none' || style.transitionDuration.split(',').some((value) => parseFloat(value) > 0);\n\n// FAB owns the batch; only its buttons draw glass. Closed lists keep their IDs\n// and resolved artwork, without inventing layout for display:none descendants.\nexport const read = (fab: HTMLElement, id: (element: HTMLElement) => string): Candidate | undefined => {\n if (fab.slot !== 'fixed' || !fab.parentElement?.matches('ion-content') || fab.contains(fab.ownerDocument.activeElement)) return;\n const children = childElements(fab);\n const main = children.filter((child) => child.matches('ion-fab-button'));\n const lists = children.filter((child) => child.matches('ion-fab-list'));\n if (main.length !== 1 || main.length + lists.length !== children.length) return;\n if (lists.some((list) => list.closest(excluded) || childElements(list).some((child) => !child.matches('ion-fab-button')))) return;\n const buttons = [main[0], ...lists.flatMap((list) => childElements(list))] as HTMLIonFabButtonElement[];\n const style = getComputedStyle(fab);\n if (hasHostMotion(style)) return;\n const transform = new DOMMatrixReadOnly(style.transform);\n if (!transform.is2D || transform.a !== 1 || transform.d !== 1 || transform.b || transform.c) return;\n const candidate: Candidate = {\n element: fab,\n control: {\n id: id(fab),\n kind: tag,\n x: 0,\n y: 0,\n width: innerWidth,\n height: innerHeight,\n dark: isDark(style),\n rtl: style.direction === 'rtl',\n items: [],\n },\n actions: new Map(),\n icons: [],\n };\n for (const button of buttons) {\n if (!button.classList.contains('ios') || button.closest(excluded) || button.color || button.type !== 'button' || button.href) return;\n if (button.querySelector('input, button, a, img, canvas, video, ion-spinner, ion-avatar, ion-badge')) return;\n const native = button.shadowRoot?.querySelector<HTMLElement>('[part=native]');\n if (!native) return;\n const s = getComputedStyle(button),\n n = getComputedStyle(native);\n // An opaque custom host/background or custom shape cannot be discarded.\n const alpha = n.backgroundColor.startsWith('rgba(') ? Number(n.backgroundColor.slice(5, -1).split(',')[3]) : 1;\n if (\n s.backgroundColor !== 'rgba(0, 0, 0, 0)' ||\n s.backgroundImage !== 'none' ||\n n.backgroundImage.includes('url(') ||\n !n.backdropFilter.includes('blur') ||\n !(alpha > 0 && alpha < 1)\n )\n return;\n const width = parseFloat(s.width),\n height = parseFloat(s.height);\n if (!(width > 0 && height > 0) || Math.abs(width - height) > 0.5 || !n.borderRadius.includes('50%')) return;\n const list = button.parentElement?.matches('ion-fab-list') ? (button.parentElement as HTMLIonFabListElement) : undefined;\n const listStyle = list && getComputedStyle(list);\n const laidOut = s.display !== 'none' && (!listStyle || listStyle.display !== 'none');\n const visible =\n laidOut &&\n (!list || (list.activated && button.show && listStyle!.visibility === 'visible' && Number(listStyle!.opacity) > 0)) &&\n s.visibility === 'visible' &&\n Number(s.opacity) > 0;\n // Standard scale is centered: even scale(0) retains its actual layout center.\n // Static list translation is already included in the DOM rect (including RTL).\n const matrix = new DOMMatrixReadOnly(s.transform);\n if (!matrix.is2D || matrix.b || matrix.c || matrix.e || matrix.f || matrix.a !== matrix.d || matrix.a < 0) return;\n // Only Ionic's hidden list child may use scale(0). Custom static scaling\n // changes the actual glass/hit area and must retain its Web rendering.\n // Stencil updates show before rendering its host class. Judge the rendered\n // scale against that class so this normal one-frame gap keeps its cover.\n if (matrix.a !== 1 && (matrix.a !== 0 || !list || button.classList.contains('fab-button-show'))) return;\n if (laidOut && !matrix.isIdentity) {\n const origin = s.transformOrigin.split(' ').map(parseFloat);\n if (Math.abs(origin[0] - width / 2) > 0.5 || Math.abs(origin[1] - height / 2) > 0.5) return;\n }\n // Ionic's list appearance is staggered show changes, without a host CSS\n // transition. Custom host animations keep their complete Web rendering.\n if (hasHostMotion(s)) return;\n if (listStyle) {\n if (hasHostMotion(listStyle)) return;\n const transform = new DOMMatrixReadOnly(listStyle.transform);\n if (!transform.is2D || transform.a !== 1 || transform.d !== 1 || transform.b || transform.c) return;\n }\n const rect = button.getBoundingClientRect();\n const x = laidOut ? rect.x + rect.width / 2 - width / 2 : 0;\n const y = laidOut ? rect.y + rect.height / 2 - height / 2 : 0;\n if (visible && (x < -1 || y < -1 || x + width > innerWidth + 1 || y + height > innerHeight + 1)) return;\n const label = text(button);\n const item: ShellItem = {\n id: id(button),\n x,\n y,\n width,\n height,\n label,\n accessibilityLabel: button.getAttribute('aria-label') ?? native.getAttribute('aria-label') ?? label,\n disabled: button.disabled || s.pointerEvents === 'none',\n selected: button.activated,\n visible,\n fontSize: parseFloat(s.fontSize),\n fontWeight: parseInt(s.fontWeight, 10) || 400,\n color: n.color,\n };\n const normal = Array.from(button.querySelectorAll('ion-icon, svg'));\n if (normal.length > 1) return;\n const close = button.shadowRoot?.querySelector<HTMLElement>('ion-icon[part=close-icon]');\n for (const [index, icon] of [normal[0], close].entries()) {\n if (!icon) {\n if (index === 1 || !label) return;\n else continue;\n }\n const svg = icon.matches('svg') ? (icon as SVGElement) : icon.shadowRoot?.querySelector<SVGElement>('svg');\n if (!svg) return;\n const iconStyle = getComputedStyle(icon);\n const inner = icon.shadowRoot?.querySelector('.icon-inner');\n if (index === 0 && inner && !new DOMMatrixReadOnly(iconStyle.transform).isIdentity) return;\n const transform = new DOMMatrixReadOnly(inner ? getComputedStyle(inner).transform : iconStyle.transform);\n const mirrored =\n transform.is2D && transform.a === -1 && transform.d === 1 && !transform.b && !transform.c && !transform.e && !transform.f;\n if (index === 0 && !transform.isIdentity && !mirrored) return;\n const source = iconSource(svg, index === 0 && mirrored);\n const iconWidth = parseFloat(iconStyle.width),\n iconHeight = parseFloat(iconStyle.height);\n // The internal close-icon fills the button vertically; its glyph uses font-size.\n const size = index === 1 ? parseFloat(iconStyle.fontSize) : iconWidth;\n const h = index === 1 ? size : iconHeight;\n if (!source || !(size > 0 && h > 0)) return;\n if (index === 0) {\n item.iconWidth = size;\n item.iconHeight = h;\n } else {\n item.closeIconWidth = size;\n item.closeIconHeight = h;\n item.iconTransition =\n parseFloat(iconStyle.transitionDuration) * (iconStyle.transitionDuration.split(',')[0].trim().endsWith('ms') ? 0.001 : 1);\n }\n candidate.icons.push({ item, source, ...(index === 1 ? { field: 'closeIcon' as const } : {}) });\n }\n if (!visible && !list) return;\n candidate.control.items.push(item);\n if (visible) candidate.actions.set(item.id, button);\n }\n return candidate;\n};\n"],"mappings":"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"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { VerticalControlAreaOptions } from "../definitions.js";
|
|
2
|
-
import { Candidate, Identify } from "../shared/candidate.js";
|
|
3
|
-
declare namespace ion_menu_button_d_exports {
|
|
4
|
-
export { append, read, selector, shadowSelector, tag };
|
|
5
|
-
}
|
|
6
|
-
export declare const tag = "ion-menu-button";
|
|
7
|
-
export declare const selector = "";
|
|
8
|
-
export declare const shadowSelector = "ion-menu-button";
|
|
9
|
-
export declare const append: (candidate: Candidate, button: HTMLIonMenuButtonElement, id: Identify) => boolean;
|
|
10
|
-
export declare const read: (group: HTMLElement, id: Identify, options?: VerticalControlAreaOptions) => Candidate | undefined;
|
|
11
|
-
//#endregion
|
|
12
|
-
export { ion_menu_button_d_exports };
|
|
13
|
-
//# sourceMappingURL=ion-menu-button.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ion-menu-button.d.ts","names":[],"sources":["../../../src/native/components/ion-menu-button.ts"],"mappings":";;;;;qBAKa;qBAEA;qBACA;qBAEA,SAAU,WAAW,WAAW,QAAQ,0BAA0B,IAAI;qBAMtE,OAAQ,OAAO,aAAa,IAAI,UAAU,UAAS,+BAAkC"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { __exportAll } from "../../_virtual/_rolldown/runtime.js";
|
|
2
|
-
import { childElements, inFixedToolbar } from "../shared/dom.js";
|
|
3
|
-
import { appendItem, createCandidate } from "../shared/candidate.js";
|
|
4
|
-
//#region src/native/components/ion-menu-button.ts
|
|
5
|
-
var ion_menu_button_exports = /* @__PURE__ */ __exportAll({
|
|
6
|
-
append: () => append,
|
|
7
|
-
read: () => read,
|
|
8
|
-
selector: () => "",
|
|
9
|
-
shadowSelector: () => shadowSelector,
|
|
10
|
-
tag: () => tag
|
|
11
|
-
});
|
|
12
|
-
const tag = "ion-menu-button";
|
|
13
|
-
const selector = "";
|
|
14
|
-
const shadowSelector = tag;
|
|
15
|
-
const append = (candidate, button, id) => {
|
|
16
|
-
if (button.type !== "button") return false;
|
|
17
|
-
const content = !button.shadowRoot?.querySelector("slot")?.assignedNodes().length ? button.shadowRoot : button;
|
|
18
|
-
return !!content && !!appendItem(candidate, button, id, content);
|
|
19
|
-
};
|
|
20
|
-
const read = (group, id, options = {}) => {
|
|
21
|
-
const children = group.matches("ion-buttons") ? childElements(group) : [];
|
|
22
|
-
if (!inFixedToolbar(group) || children.length !== 1) return;
|
|
23
|
-
const button = children[0];
|
|
24
|
-
if (!button?.matches(`ion-menu-button${group.closest("ion-app.ios-theme-vertical-bars") ? "" : ".ios"}`)) return;
|
|
25
|
-
const candidate = createCandidate(group, tag, id, options);
|
|
26
|
-
return append(candidate, button, id) ? candidate : void 0;
|
|
27
|
-
};
|
|
28
|
-
//#endregion
|
|
29
|
-
export { append, ion_menu_button_exports, read, selector, shadowSelector, tag };
|
|
30
|
-
|
|
31
|
-
//# sourceMappingURL=ion-menu-button.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ion-menu-button.js","names":[],"sources":["../../../src/native/components/ion-menu-button.ts"],"sourcesContent":["import { createCandidate, appendItem } from '../shared/candidate';\nimport type { Candidate, Identify } from '../shared/candidate';\nimport type { VerticalControlAreaOptions } from '../definitions';\nimport { childElements, inFixedToolbar } from '../shared/dom';\n\nexport const tag = 'ion-menu-button';\n// The glass and projection ownership belong to ion-buttons, even for one menu button.\nexport const selector = '';\nexport const shadowSelector = tag;\n\nexport const append = (candidate: Candidate, button: HTMLIonMenuButtonElement, id: Identify): boolean => {\n if (button.type !== 'button') return false;\n const content = !button.shadowRoot?.querySelector('slot')?.assignedNodes().length ? button.shadowRoot : button;\n return !!content && !!appendItem(candidate, button, id, content);\n};\n\nexport const read = (group: HTMLElement, id: Identify, options: VerticalControlAreaOptions = {}): Candidate | undefined => {\n const children = group.matches('ion-buttons') ? childElements(group) : [];\n if (!inFixedToolbar(group) || children.length !== 1) return;\n const button = children[0];\n if (!button?.matches(`${tag}${group.closest('ion-app.ios-theme-vertical-bars') ? '' : '.ios'}`)) return;\n const candidate = createCandidate(group, tag, id, options);\n return append(candidate, button as HTMLIonMenuButtonElement, id) ? candidate : undefined;\n};\n"],"mappings":";;;;;;;;;;;AAKA,MAAa,MAAM;AAEnB,MAAa,WAAW;AACxB,MAAa,iBAAiB;AAE9B,MAAa,UAAU,WAAsB,QAAkC,OAA0B;CACvG,IAAI,OAAO,SAAS,UAAU,OAAO;CACrC,MAAM,UAAU,CAAC,OAAO,YAAY,cAAc,MAAM,CAAC,EAAE,cAAc,CAAC,CAAC,SAAS,OAAO,aAAa;CACxG,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,WAAW,WAAW,QAAQ,IAAI,OAAO;AACjE;AAEA,MAAa,QAAQ,OAAoB,IAAc,UAAsC,CAAC,MAA6B;CACzH,MAAM,WAAW,MAAM,QAAQ,aAAa,IAAI,cAAc,KAAK,IAAI,CAAC;CACxE,IAAI,CAAC,eAAe,KAAK,KAAK,SAAS,WAAW,GAAG;CACrD,MAAM,SAAS,SAAS;CACxB,IAAI,CAAC,QAAQ,QAAQ,kBAAS,MAAM,QAAQ,iCAAiC,IAAI,KAAK,QAAQ,GAAG;CACjG,MAAM,YAAY,gBAAgB,OAAO,KAAK,IAAI,OAAO;CACzD,OAAO,OAAO,WAAW,QAAoC,EAAE,IAAI,YAAY,KAAA;AACjF"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { Candidate, Identify } from "../shared/candidate.js";
|
|
2
|
-
declare namespace ion_segment_d_exports {
|
|
3
|
-
export { read, shadowSelector, tag, tracksMotion };
|
|
4
|
-
}
|
|
5
|
-
export declare const tag = "ion-segment";
|
|
6
|
-
export declare const shadowSelector = "ion-segment-button";
|
|
7
|
-
export declare const tracksMotion = true;
|
|
8
|
-
export declare const read: (element: HTMLElement, id: Identify) => Candidate | undefined;
|
|
9
|
-
//#endregion
|
|
10
|
-
export { ion_segment_d_exports };
|
|
11
|
-
//# sourceMappingURL=ion-segment.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ion-segment.d.ts","names":[],"sources":["../../../src/native/components/ion-segment.ts"],"mappings":";;;;qBAIa;qBACA;qBACA;qBAEA,OAAQ,SAAS,aAAa,IAAI,aAAW"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { __exportAll } from "../../_virtual/_rolldown/runtime.js";
|
|
2
|
-
import { inFixedToolbar } from "../shared/dom.js";
|
|
3
|
-
import { appendItem, createCandidate } from "../shared/candidate.js";
|
|
4
|
-
//#region src/native/components/ion-segment.ts
|
|
5
|
-
var ion_segment_exports = /* @__PURE__ */ __exportAll({
|
|
6
|
-
read: () => read,
|
|
7
|
-
shadowSelector: () => shadowSelector,
|
|
8
|
-
tag: () => tag,
|
|
9
|
-
tracksMotion: () => true
|
|
10
|
-
});
|
|
11
|
-
const tag = "ion-segment";
|
|
12
|
-
const shadowSelector = "ion-segment-button";
|
|
13
|
-
const tracksMotion = true;
|
|
14
|
-
const read = (element, id) => {
|
|
15
|
-
const segment = element;
|
|
16
|
-
if (!inFixedToolbar(element) || segment.scrollable || element.classList.contains("segment-expand") || element.querySelector("ion-segment-button[content-id]")) return;
|
|
17
|
-
const children = Array.from(element.querySelectorAll(":scope > ion-segment-button"));
|
|
18
|
-
if (!children.length) return;
|
|
19
|
-
const candidate = createCandidate(element, tag, id);
|
|
20
|
-
for (const child of children) {
|
|
21
|
-
const item = appendItem(candidate, child, id);
|
|
22
|
-
if (!item || item.label && item.iconWidth) return;
|
|
23
|
-
item.selected = segment.value === child.value;
|
|
24
|
-
}
|
|
25
|
-
return candidate;
|
|
26
|
-
};
|
|
27
|
-
//#endregion
|
|
28
|
-
export { ion_segment_exports, read, shadowSelector, tag, tracksMotion };
|
|
29
|
-
|
|
30
|
-
//# sourceMappingURL=ion-segment.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ion-segment.js","names":[],"sources":["../../../src/native/components/ion-segment.ts"],"sourcesContent":["import { createCandidate, appendItem } from '../shared/candidate';\nimport type { Candidate, Identify } from '../shared/candidate';\nimport { inFixedToolbar } from '../shared/dom';\n\nexport const tag = 'ion-segment';\nexport const shadowSelector = 'ion-segment-button';\nexport const tracksMotion = true;\n\nexport const read = (element: HTMLElement, id: Identify): Candidate | undefined => {\n const segment = element as HTMLIonSegmentElement;\n if (\n !inFixedToolbar(element) ||\n segment.scrollable ||\n element.classList.contains('segment-expand') ||\n element.querySelector('ion-segment-button[content-id]')\n )\n return;\n const children = Array.from(element.querySelectorAll<HTMLIonSegmentButtonElement>(':scope > ion-segment-button'));\n if (!children.length) return;\n const candidate = createCandidate(element, tag, id);\n for (const child of children) {\n const item = appendItem(candidate, child, id);\n if (!item || (item.label && item.iconWidth)) return;\n item.selected = segment.value === child.value;\n }\n return candidate;\n};\n"],"mappings":";;;;;;;;;;AAIA,MAAa,MAAM;AACnB,MAAa,iBAAiB;AAC9B,MAAa,eAAe;AAE5B,MAAa,QAAQ,SAAsB,OAAwC;CACjF,MAAM,UAAU;CAChB,IACE,CAAC,eAAe,OAAO,KACvB,QAAQ,cACR,QAAQ,UAAU,SAAS,gBAAgB,KAC3C,QAAQ,cAAc,gCAAgC,GAEtD;CACF,MAAM,WAAW,MAAM,KAAK,QAAQ,iBAA8C,6BAA6B,CAAC;CAChH,IAAI,CAAC,SAAS,QAAQ;CACtB,MAAM,YAAY,gBAAgB,SAAS,KAAK,EAAE;CAClD,KAAK,MAAM,SAAS,UAAU;EAC5B,MAAM,OAAO,WAAW,WAAW,OAAO,EAAE;EAC5C,IAAI,CAAC,QAAS,KAAK,SAAS,KAAK,WAAY;EAC7C,KAAK,WAAW,QAAQ,UAAU,MAAM;CAC1C;CACA,OAAO;AACT"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { Candidate, Identify } from "../shared/candidate.js";
|
|
2
|
-
declare namespace ion_tab_bar_d_exports {
|
|
3
|
-
export { read, shadowSelector, tag, tracksMotion };
|
|
4
|
-
}
|
|
5
|
-
export declare const tag = "ion-tab-bar";
|
|
6
|
-
export declare const shadowSelector = "ion-tab-button";
|
|
7
|
-
export declare const tracksMotion = true;
|
|
8
|
-
export declare const read: (element: HTMLElement, id: Identify) => Candidate | undefined;
|
|
9
|
-
//#endregion
|
|
10
|
-
export { ion_tab_bar_d_exports };
|
|
11
|
-
//# sourceMappingURL=ion-tab-bar.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ion-tab-bar.d.ts","names":[],"sources":["../../../src/native/components/ion-tab-bar.ts"],"mappings":";;;;qBAGa;qBACA;qBACA;qBAEA,OAAQ,SAAS,aAAa,IAAI,aAAW"}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { __exportAll } from "../../_virtual/_rolldown/runtime.js";
|
|
2
|
-
import { appendItem, createCandidate } from "../shared/candidate.js";
|
|
3
|
-
//#region src/native/components/ion-tab-bar.ts
|
|
4
|
-
var ion_tab_bar_exports = /* @__PURE__ */ __exportAll({
|
|
5
|
-
read: () => read,
|
|
6
|
-
shadowSelector: () => shadowSelector,
|
|
7
|
-
tag: () => tag,
|
|
8
|
-
tracksMotion: () => true
|
|
9
|
-
});
|
|
10
|
-
const tag = "ion-tab-bar";
|
|
11
|
-
const shadowSelector = "ion-tab-button";
|
|
12
|
-
const tracksMotion = true;
|
|
13
|
-
const read = (element, id) => {
|
|
14
|
-
if (element.closest("ion-content")) return;
|
|
15
|
-
const children = Array.from(element.querySelectorAll(":scope > ion-tab-button:not(.ion-cloned-element)"));
|
|
16
|
-
if (!children.length) return;
|
|
17
|
-
const width = children[0].getBoundingClientRect().width;
|
|
18
|
-
if (children.some((child) => (child.layout ?? "icon-top") !== "icon-top" || Math.abs(child.getBoundingClientRect().width - width) > 1)) return void 0;
|
|
19
|
-
const candidate = createCandidate(element, tag, id);
|
|
20
|
-
const style = getComputedStyle(element);
|
|
21
|
-
const rtl = style.direction === "rtl";
|
|
22
|
-
const position = [
|
|
23
|
-
"start",
|
|
24
|
-
"center",
|
|
25
|
-
"end"
|
|
26
|
-
].find((value) => element.classList.contains(`tab-bar-position-${value}`));
|
|
27
|
-
candidate.control.tabBarAnchor = {
|
|
28
|
-
x: position === "center" ? .5 : position ? position === "start" !== rtl ? 0 : 1 : style.left !== "auto" ? 0 : 1,
|
|
29
|
-
y: element.slot === "bottom" ? 1 : 0
|
|
30
|
-
};
|
|
31
|
-
for (const child of children) {
|
|
32
|
-
const item = appendItem(candidate, child, id);
|
|
33
|
-
if (!item) return;
|
|
34
|
-
const svg = child.querySelector("svg") ?? child.querySelector("ion-icon")?.shadowRoot?.querySelector("svg");
|
|
35
|
-
if (svg) {
|
|
36
|
-
item.iconPosition = "top";
|
|
37
|
-
const color = getComputedStyle(svg).color;
|
|
38
|
-
const shapes = Array.from(svg.querySelectorAll("path, rect, circle, ellipse, line, polygon, polyline"));
|
|
39
|
-
item.iconTemplate = shapes.length > 0 && shapes.every((shape) => {
|
|
40
|
-
const paint = getComputedStyle(shape);
|
|
41
|
-
return [paint.fill, paint.stroke].every((value) => value === "none" || value === color);
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
return candidate;
|
|
46
|
-
};
|
|
47
|
-
//#endregion
|
|
48
|
-
export { ion_tab_bar_exports, read, shadowSelector, tag, tracksMotion };
|
|
49
|
-
|
|
50
|
-
//# sourceMappingURL=ion-tab-bar.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ion-tab-bar.js","names":[],"sources":["../../../src/native/components/ion-tab-bar.ts"],"sourcesContent":["import { createCandidate, appendItem } from '../shared/candidate';\nimport type { Candidate, Identify } from '../shared/candidate';\n\nexport const tag = 'ion-tab-bar';\nexport const shadowSelector = 'ion-tab-button';\nexport const tracksMotion = true;\n\nexport const read = (element: HTMLElement, id: Identify): Candidate | undefined => {\n if (element.closest('ion-content')) return;\n const children = Array.from(element.querySelectorAll<HTMLElement>(':scope > ion-tab-button:not(.ion-cloned-element)'));\n if (!children.length) return;\n // Only equal items with Ionic's default layout map to UIKit's adaptive tabs.\n const width = children[0].getBoundingClientRect().width;\n if (\n children.some(\n (child) =>\n ((child as HTMLIonTabButtonElement).layout ?? 'icon-top') !== 'icon-top' ||\n Math.abs(child.getBoundingClientRect().width - width) > 1,\n )\n )\n return undefined;\n\n const candidate = createCandidate(element, tag, id);\n const style = getComputedStyle(element);\n const rtl = style.direction === 'rtl';\n const position = ['start', 'center', 'end'].find((value) => element.classList.contains(`tab-bar-position-${value}`));\n candidate.control.tabBarAnchor = {\n x: position === 'center' ? 0.5 : position ? ((position === 'start') !== rtl ? 0 : 1) : style.left !== 'auto' ? 0 : 1,\n y: element.slot === 'bottom' ? 1 : 0,\n };\n\n for (const child of children) {\n const item = appendItem(candidate, child, id);\n if (!item) return;\n const svg = child.querySelector<SVGElement>('svg') ?? child.querySelector('ion-icon')?.shadowRoot?.querySelector<SVGElement>('svg');\n if (svg) {\n item.iconPosition = 'top';\n const color = getComputedStyle(svg).color;\n const shapes = Array.from(svg.querySelectorAll('path, rect, circle, ellipse, line, polygon, polyline'));\n // Only text-colored SVGs follow UIKit selection tint; preserve explicit artwork colors.\n item.iconTemplate =\n shapes.length > 0 &&\n shapes.every((shape) => {\n const paint = getComputedStyle(shape);\n return [paint.fill, paint.stroke].every((value) => value === 'none' || value === color);\n });\n }\n }\n return candidate;\n};\n"],"mappings":";;;;;;;;;AAGA,MAAa,MAAM;AACnB,MAAa,iBAAiB;AAC9B,MAAa,eAAe;AAE5B,MAAa,QAAQ,SAAsB,OAAwC;CACjF,IAAI,QAAQ,QAAQ,aAAa,GAAG;CACpC,MAAM,WAAW,MAAM,KAAK,QAAQ,iBAA8B,kDAAkD,CAAC;CACrH,IAAI,CAAC,SAAS,QAAQ;CAEtB,MAAM,QAAQ,SAAS,EAAE,CAAC,sBAAsB,CAAC,CAAC;CAClD,IACE,SAAS,MACN,WACG,MAAkC,UAAU,gBAAgB,cAC9D,KAAK,IAAI,MAAM,sBAAsB,CAAC,CAAC,QAAQ,KAAK,IAAI,CAC5D,GAEA,OAAO,KAAA;CAET,MAAM,YAAY,gBAAgB,SAAS,KAAK,EAAE;CAClD,MAAM,QAAQ,iBAAiB,OAAO;CACtC,MAAM,MAAM,MAAM,cAAc;CAChC,MAAM,WAAW;EAAC;EAAS;EAAU;CAAK,CAAC,CAAC,MAAM,UAAU,QAAQ,UAAU,SAAS,oBAAoB,OAAO,CAAC;CACnH,UAAU,QAAQ,eAAe;EAC/B,GAAG,aAAa,WAAW,KAAM,WAAa,aAAa,YAAa,MAAM,IAAI,IAAK,MAAM,SAAS,SAAS,IAAI;EACnH,GAAG,QAAQ,SAAS,WAAW,IAAI;CACrC;CAEA,KAAK,MAAM,SAAS,UAAU;EAC5B,MAAM,OAAO,WAAW,WAAW,OAAO,EAAE;EAC5C,IAAI,CAAC,MAAM;EACX,MAAM,MAAM,MAAM,cAA0B,KAAK,KAAK,MAAM,cAAc,UAAU,CAAC,EAAE,YAAY,cAA0B,KAAK;EAClI,IAAI,KAAK;GACP,KAAK,eAAe;GACpB,MAAM,QAAQ,iBAAiB,GAAG,CAAC,CAAC;GACpC,MAAM,SAAS,MAAM,KAAK,IAAI,iBAAiB,sDAAsD,CAAC;GAEtG,KAAK,eACH,OAAO,SAAS,KAChB,OAAO,OAAO,UAAU;IACtB,MAAM,QAAQ,iBAAiB,KAAK;IACpC,OAAO,CAAC,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,OAAO,UAAU,UAAU,UAAU,UAAU,KAAK;GACxF,CAAC;EACL;CACF;CACA,OAAO;AACT"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { NativeSearchBinding } from "../../native-integration/index.js";
|
|
2
|
-
import { ShellSearchEvent } from "../definitions.js";
|
|
3
|
-
import { Candidate } from "../shared/candidate.js";
|
|
4
|
-
//#region src/native/components/searchable-tabs.d.ts
|
|
5
|
-
export declare const createSearchSupport: (doc: Document, id: (element: Element) => string, schedule: () => void) => {
|
|
6
|
-
keyboard(visible: boolean): void;
|
|
7
|
-
keepSearchTabsVisible(): void;
|
|
8
|
-
decorate(candidates: Candidate[], blocked: (element: HTMLElement) => boolean): Candidate[];
|
|
9
|
-
projected: (binding: NativeSearchBinding) => boolean;
|
|
10
|
-
hasActive(): boolean;
|
|
11
|
-
begin(binding: NativeSearchBinding, revision: number): void;
|
|
12
|
-
setStatus(binding: NativeSearchBinding, active: boolean, focused?: boolean): void;
|
|
13
|
-
release(element: HTMLElement): void;
|
|
14
|
-
reject(ids: string[]): void;
|
|
15
|
-
event(event: ShellSearchEvent): void;
|
|
16
|
-
retire(binding: NativeSearchBinding): void;
|
|
17
|
-
destroy(): void;
|
|
18
|
-
};
|
|
19
|
-
//#endregion
|
|
20
|
-
//# sourceMappingURL=searchable-tabs.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"searchable-tabs.d.ts","names":[],"sources":["../../../src/native/components/searchable-tabs.ts"],"mappings":";;;;qBAwBa,sBAAuB,KAAK,UAAU,KAAK,SAAS,oBAAoB;EA8I/D,SAAA;;EAwBG,SAAA,YAAA,aAAW,UAAY,SAAS,0BAA0B;EAvJrD,YAAA,SAAA;;EA+UX,MAAA,SAAA,qBAAmB;EAKf,UAAA,SAAA,qBAAmB,iBAAiB;EAUtC,QAAA,SAAA;EAGL,OAAA;EASC,MAAA,OAAA;EAqCG,OAAA,SAAA"}
|