first commit

This commit is contained in:
2026-03-10 16:18:05 +00:00
commit 11f9c069b5
31635 changed files with 3187747 additions and 0 deletions

View File

@@ -0,0 +1,6 @@
const SplitHost = () => {
console.warn('[RNScreens] Split component is supported only for iOS. Consider using an alternative layout for Android.');
return null;
};
export default SplitHost;
//# sourceMappingURL=SplitHost.android.js.map

View File

@@ -0,0 +1 @@
{"version":3,"names":["SplitHost","console","warn"],"sourceRoot":"../../../../../src","sources":["components/gamma/split/SplitHost.android.tsx"],"mappings":"AAAA,MAAMA,SAAS,GAAGA,CAAA,KAAM;EACtBC,OAAO,CAACC,IAAI,CACV,0GACF,CAAC;EACD,OAAO,IAAI;AACb,CAAC;AAED,eAAeF,SAAS","ignoreList":[]}

View File

@@ -0,0 +1,65 @@
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
import React from 'react';
import { StyleSheet } from 'react-native';
import SplitViewHostNativeComponent from '../../../fabric/gamma/SplitViewHostNativeComponent';
import SplitScreen from './SplitScreen';
// According to the UIKit documentation: https://developer.apple.com/documentation/uikit/uisplitviewcontroller/displaymode-swift.enum
// Only specific pairs for displayMode - splitBehavior are valid and others may lead to unexpected results.
// Therefore, we're adding check on the JS side to return a feedback to the client when that pairing isn't valid.
// However, we're not blocking these props to be set on the native side, because it doesn't crash, just the result or transitions may not work as expected.
const displayModeForSplitCompatibilityMap = {
tile: ['secondaryOnly', 'oneBesideSecondary', 'twoBesideSecondary'],
overlay: ['secondaryOnly', 'oneOverSecondary', 'twoOverSecondary'],
displace: ['secondaryOnly', 'oneBesideSecondary', 'twoDisplaceSecondary'],
automatic: [] // placeholder for satisfying types; we'll handle it specially in logic
};
const isValidDisplayModeForSplitBehavior = (displayMode, splitBehavior) => {
if (splitBehavior === 'automatic') {
// for automatic we cannot easily verify the compatibility, because it depends on the system preference for display mode, therefore we're assuming that 'automatic' has only valid combinations
return true;
}
return displayModeForSplitCompatibilityMap[splitBehavior].includes(displayMode);
};
/**
* EXPERIMENTAL API, MIGHT CHANGE W/O ANY NOTICE
*/
function SplitHost(props) {
const {
preferredDisplayMode,
preferredSplitBehavior
} = props;
React.useEffect(() => {
if (preferredDisplayMode && preferredSplitBehavior) {
const isValid = isValidDisplayModeForSplitBehavior(preferredDisplayMode, preferredSplitBehavior);
if (!isValid) {
const validDisplayModes = displayModeForSplitCompatibilityMap[preferredSplitBehavior];
console.warn(`Invalid display mode "${preferredDisplayMode}" for split behavior "${preferredSplitBehavior}".` + `\nValid modes for "${preferredSplitBehavior}" are: ${validDisplayModes.join(', ')}.`);
}
}
}, [preferredDisplayMode, preferredSplitBehavior]);
const children = React.Children.toArray(props.children);
const columns = children.filter(
// @ts-ignore - type is valid attribute for child
child => child.type === SplitScreen.Column);
const inspectors = children.filter(
// @ts-ignore - type is valid attribute for child
child => child.type === SplitScreen.Inspector);
return /*#__PURE__*/React.createElement(SplitViewHostNativeComponent
// UISplitViewController requires the number of columns to be specified at initialization and it cannot be changed dynamically later.
// By using a specific key in this form, we can detect changes in the number of React children.
// This enables us to fully recreate the SplitView when necessary, ensuring the correct column configuration is always applied.
, _extends({
key: `columns-${columns.length}-inspectors-${inspectors.length}`
}, props, {
style: styles.container
}), props.children);
}
const styles = StyleSheet.create({
container: {
flex: 1
}
});
export default SplitHost;
//# sourceMappingURL=SplitHost.js.map

View File

@@ -0,0 +1 @@
{"version":3,"names":["React","StyleSheet","SplitViewHostNativeComponent","SplitScreen","displayModeForSplitCompatibilityMap","tile","overlay","displace","automatic","isValidDisplayModeForSplitBehavior","displayMode","splitBehavior","includes","SplitHost","props","preferredDisplayMode","preferredSplitBehavior","useEffect","isValid","validDisplayModes","console","warn","join","children","Children","toArray","columns","filter","child","type","Column","inspectors","Inspector","createElement","_extends","key","length","style","styles","container","create","flex"],"sourceRoot":"../../../../../src","sources":["components/gamma/split/SplitHost.tsx"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,UAAU,QAAQ,cAAc;AACzC,OAAOC,4BAA4B,MAAM,oDAAoD;AAM7F,OAAOC,WAAW,MAAM,eAAe;;AAEvC;AACA;AACA;AACA;AACA,MAAMC,mCAGL,GAAG;EACFC,IAAI,EAAE,CAAC,eAAe,EAAE,oBAAoB,EAAE,oBAAoB,CAAC;EACnEC,OAAO,EAAE,CAAC,eAAe,EAAE,kBAAkB,EAAE,kBAAkB,CAAC;EAClEC,QAAQ,EAAE,CAAC,eAAe,EAAE,oBAAoB,EAAE,sBAAsB,CAAC;EACzEC,SAAS,EAAE,EAAE,CAAE;AACjB,CAAC;AAED,MAAMC,kCAAkC,GAAGA,CACzCC,WAA6B,EAC7BC,aAA4B,KACzB;EACH,IAAIA,aAAa,KAAK,WAAW,EAAE;IACjC;IACA,OAAO,IAAI;EACb;EACA,OAAOP,mCAAmC,CAACO,aAAa,CAAC,CAACC,QAAQ,CAChEF,WACF,CAAC;AACH,CAAC;;AAED;AACA;AACA;AACA,SAASG,SAASA,CAACC,KAAqB,EAAE;EACxC,MAAM;IAAEC,oBAAoB;IAAEC;EAAuB,CAAC,GAAGF,KAAK;EAE9Dd,KAAK,CAACiB,SAAS,CAAC,MAAM;IACpB,IAAIF,oBAAoB,IAAIC,sBAAsB,EAAE;MAClD,MAAME,OAAO,GAAGT,kCAAkC,CAChDM,oBAAoB,EACpBC,sBACF,CAAC;MACD,IAAI,CAACE,OAAO,EAAE;QACZ,MAAMC,iBAAiB,GACrBf,mCAAmC,CAACY,sBAAsB,CAAC;QAC7DI,OAAO,CAACC,IAAI,CACV,yBAAyBN,oBAAoB,yBAAyBC,sBAAsB,IAAI,GAC9F,sBAAsBA,sBAAsB,UAAUG,iBAAiB,CAACG,IAAI,CAC1E,IACF,CAAC,GACL,CAAC;MACH;IACF;EACF,CAAC,EAAE,CAACP,oBAAoB,EAAEC,sBAAsB,CAAC,CAAC;EAElD,MAAMO,QAAQ,GAAGvB,KAAK,CAACwB,QAAQ,CAACC,OAAO,CAACX,KAAK,CAACS,QAAQ,CAAC;EAEvD,MAAMG,OAAO,GAAGH,QAAQ,CAACI,MAAM;EAC7B;EACAC,KAAK,IAAIA,KAAK,CAACC,IAAI,KAAK1B,WAAW,CAAC2B,MACtC,CAAC;EAED,MAAMC,UAAU,GAAGR,QAAQ,CAACI,MAAM;EAChC;EACAC,KAAK,IAAIA,KAAK,CAACC,IAAI,KAAK1B,WAAW,CAAC6B,SACtC,CAAC;EAED,oBACEhC,KAAA,CAAAiC,aAAA,CAAC/B;EACC;EACA;EACA;EAAA,EAAAgC,QAAA;IACAC,GAAG,EAAE,WAAWT,OAAO,CAACU,MAAM,eAAeL,UAAU,CAACK,MAAM;EAAG,GAC7DtB,KAAK;IACTuB,KAAK,EAAEC,MAAM,CAACC;EAAU,IACvBzB,KAAK,CAACS,QACqB,CAAC;AAEnC;AAEA,MAAMe,MAAM,GAAGrC,UAAU,CAACuC,MAAM,CAAC;EAC/BD,SAAS,EAAE;IACTE,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAEF,eAAe5B,SAAS","ignoreList":[]}

View File

@@ -0,0 +1,2 @@
export {};
//# sourceMappingURL=SplitHost.types.js.map

View File

@@ -0,0 +1 @@
{"version":3,"names":[],"sourceRoot":"../../../../../src","sources":["components/gamma/split/SplitHost.types.ts"],"mappings":"","ignoreList":[]}

View File

@@ -0,0 +1,6 @@
const SplitHost = () => {
console.warn('[RNScreens] Split component is supported only for iOS. Consider using an alternative layout for Web.');
return null;
};
export default SplitHost;
//# sourceMappingURL=SplitHost.web.js.map

View File

@@ -0,0 +1 @@
{"version":3,"names":["SplitHost","console","warn"],"sourceRoot":"../../../../../src","sources":["components/gamma/split/SplitHost.web.tsx"],"mappings":"AAAA,MAAMA,SAAS,GAAGA,CAAA,KAAM;EACtBC,OAAO,CAACC,IAAI,CACV,sGACF,CAAC;EACD,OAAO,IAAI;AACb,CAAC;AAED,eAAeF,SAAS","ignoreList":[]}

View File

@@ -0,0 +1,11 @@
const NOOP = () => {
console.warn('[RNScreens] Split component is supported only for iOS. Consider using an alternative layout for Android.');
return null;
};
const Column = NOOP;
const Inspector = NOOP;
export default {
Column,
Inspector
};
//# sourceMappingURL=SplitScreen.android.js.map

View File

@@ -0,0 +1 @@
{"version":3,"names":["NOOP","console","warn","Column","Inspector"],"sourceRoot":"../../../../../src","sources":["components/gamma/split/SplitScreen.android.tsx"],"mappings":"AAAA,MAAMA,IAAI,GAAGA,CAAA,KAAM;EACjBC,OAAO,CAACC,IAAI,CACV,0GACF,CAAC;EACD,OAAO,IAAI;AACb,CAAC;AAED,MAAMC,MAAM,GAAGH,IAAI;AACnB,MAAMI,SAAS,GAAGJ,IAAI;AAEtB,eAAe;EAAEG,MAAM;EAAEC;AAAU,CAAC","ignoreList":[]}

View File

@@ -0,0 +1,36 @@
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
import React from 'react';
import { StyleSheet } from 'react-native';
import SplitViewScreenNativeComponent from '../../../fabric/gamma/SplitViewScreenNativeComponent';
/**
* EXPERIMENTAL API, MIGHT CHANGE W/O ANY NOTICE
*/
function Column(props) {
return /*#__PURE__*/React.createElement(SplitViewScreenNativeComponent, _extends({
columnType: "column"
}, props, {
style: StyleSheet.absoluteFill
}), props.children);
}
/**
* EXPERIMENTAL API, MIGHT CHANGE W/O ANY NOTICE
*/
function Inspector(props) {
return /*#__PURE__*/React.createElement(SplitViewScreenNativeComponent, _extends({
columnType: "inspector"
}, props, {
style: StyleSheet.absoluteFill
}), props.children);
}
/**
* EXPERIMENTAL API, MIGHT CHANGE W/O ANY NOTICE
*/
// TODO: refactor to drop `Screen` suffix as the API name is really long at the moment
const SplitScreen = {
Column,
Inspector
};
export default SplitScreen;
//# sourceMappingURL=SplitScreen.js.map

View File

@@ -0,0 +1 @@
{"version":3,"names":["React","StyleSheet","SplitViewScreenNativeComponent","Column","props","createElement","_extends","columnType","style","absoluteFill","children","Inspector","SplitScreen"],"sourceRoot":"../../../../../src","sources":["components/gamma/split/SplitScreen.tsx"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,UAAU,QAAQ,cAAc;AACzC,OAAOC,8BAA8B,MAAM,sDAAsD;AAGjG;AACA;AACA;AACA,SAASC,MAAMA,CAACC,KAAuB,EAAE;EACvC,oBACEJ,KAAA,CAAAK,aAAA,CAACH,8BAA8B,EAAAI,QAAA;IAC7BC,UAAU,EAAC;EAAQ,GACfH,KAAK;IACTI,KAAK,EAAEP,UAAU,CAACQ;EAAa,IAC9BL,KAAK,CAACM,QACuB,CAAC;AAErC;;AAEA;AACA;AACA;AACA,SAASC,SAASA,CAACP,KAAuB,EAAE;EAC1C,oBACEJ,KAAA,CAAAK,aAAA,CAACH,8BAA8B,EAAAI,QAAA;IAC7BC,UAAU,EAAC;EAAW,GAClBH,KAAK;IACTI,KAAK,EAAEP,UAAU,CAACQ;EAAa,IAC9BL,KAAK,CAACM,QACuB,CAAC;AAErC;;AAEA;AACA;AACA;AACA;AACA,MAAME,WAAW,GAAG;EAClBT,MAAM;EACNQ;AACF,CAAC;AAED,eAAeC,WAAW","ignoreList":[]}

View File

@@ -0,0 +1,2 @@
export {};
//# sourceMappingURL=SplitScreen.types.js.map

View File

@@ -0,0 +1 @@
{"version":3,"names":[],"sourceRoot":"../../../../../src","sources":["components/gamma/split/SplitScreen.types.ts"],"mappings":"","ignoreList":[]}

View File

@@ -0,0 +1,17 @@
const NOOP = () => {
console.warn('[RNScreens] Split component is supported only for iOS. Consider using an alternative layout for Web.');
return null;
};
const Column = NOOP;
const Inspector = NOOP;
/**
* EXPERIMENTAL API, MIGHT CHANGE W/O ANY NOTICE
*/
// TODO: refactor to drop `Screen` suffix as the API name is really long at the moment
const SplitScreen = {
Column,
Inspector
};
export default SplitScreen;
//# sourceMappingURL=SplitScreen.web.js.map

View File

@@ -0,0 +1 @@
{"version":3,"names":["NOOP","console","warn","Column","Inspector","SplitScreen"],"sourceRoot":"../../../../../src","sources":["components/gamma/split/SplitScreen.web.tsx"],"mappings":"AAAA,MAAMA,IAAI,GAAGA,CAAA,KAAM;EACjBC,OAAO,CAACC,IAAI,CACV,sGACF,CAAC;EACD,OAAO,IAAI;AACb,CAAC;AAED,MAAMC,MAAM,GAAGH,IAAI;AACnB,MAAMI,SAAS,GAAGJ,IAAI;;AAEtB;AACA;AACA;AACA;AACA,MAAMK,WAAW,GAAG;EAClBF,MAAM;EACNC;AACF,CAAC;AAED,eAAeC,WAAW","ignoreList":[]}

View File

@@ -0,0 +1,15 @@
import SplitHost from './SplitHost';
import SplitScreen from './SplitScreen';
export * from './SplitHost.types';
export * from './SplitScreen.types';
/**
* EXPERIMENTAL API, MIGHT CHANGE W/O ANY NOTICE
*/
const Split = {
Host: SplitHost,
Column: SplitScreen.Column,
Inspector: SplitScreen.Inspector
};
export default Split;
//# sourceMappingURL=index.js.map

View File

@@ -0,0 +1 @@
{"version":3,"names":["SplitHost","SplitScreen","Split","Host","Column","Inspector"],"sourceRoot":"../../../../../src","sources":["components/gamma/split/index.ts"],"mappings":"AAAA,OAAOA,SAAS,MAAM,aAAa;AACnC,OAAOC,WAAW,MAAM,eAAe;AAEvC,cAAc,mBAAmB;AACjC,cAAc,qBAAqB;;AAEnC;AACA;AACA;AACA,MAAMC,KAAK,GAAG;EACZC,IAAI,EAAEH,SAAS;EACfI,MAAM,EAAEH,WAAW,CAACG,MAAM;EAC1BC,SAAS,EAAEJ,WAAW,CAACI;AACzB,CAAC;AAED,eAAeH,KAAK","ignoreList":[]}