git0 0.2.11 → 0.2.13
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/assets/js/c3a618e1.965a31da.js +1 -1
- package/docs/functions/index.html +2 -2
- package/docs-config/src/functions/index.md +1 -1
- package/package.json +2 -1
- package/readme.md +18 -30
- package/src/fm.js +1130 -0
- package/src/git0.js +3 -4
- package/src/github-api.js +14 -15
- package/TypeScript-React-Starter/LICENSE +0 -21
- package/TypeScript-React-Starter/README-CRA.md +0 -1281
- package/TypeScript-React-Starter/README.md +0 -810
- package/TypeScript-React-Starter/package.json +0 -28
- package/TypeScript-React-Starter/public/favicon.ico +0 -0
- package/TypeScript-React-Starter/public/index.html +0 -31
- package/TypeScript-React-Starter/src/App.css +0 -24
- package/TypeScript-React-Starter/src/App.test.tsx +0 -8
- package/TypeScript-React-Starter/src/App.tsx +0 -23
- package/TypeScript-React-Starter/src/actions/index.tsx +0 -24
- package/TypeScript-React-Starter/src/components/Hello.css +0 -13
- package/TypeScript-React-Starter/src/components/Hello.test.tsx +0 -30
- package/TypeScript-React-Starter/src/components/Hello.tsx +0 -35
- package/TypeScript-React-Starter/src/constants/index.tsx +0 -6
- package/TypeScript-React-Starter/src/containers/Hello.tsx +0 -20
- package/TypeScript-React-Starter/src/index.css +0 -5
- package/TypeScript-React-Starter/src/index.tsx +0 -22
- package/TypeScript-React-Starter/src/logo.svg +0 -7
- package/TypeScript-React-Starter/src/reducers/index.tsx +0 -15
- package/TypeScript-React-Starter/src/types/index.tsx +0 -5
- package/TypeScript-React-Starter/tsconfig.json +0 -29
- package/TypeScript-React-Starter/tslint.json +0 -11
- package/TypeScript-React-Starter/yarn.lock +0 -4785
- package/svelte-nodegui/.all-contributorsrc +0 -60
- package/svelte-nodegui/.vscode/launch.json +0 -29
- package/svelte-nodegui/CHANGELOG.md +0 -153
- package/svelte-nodegui/LICENSE +0 -22
- package/svelte-nodegui/README.md +0 -151
- package/svelte-nodegui/demo/.editorconfig +0 -15
- package/svelte-nodegui/demo/.vscode/extensions.json +0 -3
- package/svelte-nodegui/demo/livereload.js +0 -29
- package/svelte-nodegui/demo/package-lock.json +0 -3514
- package/svelte-nodegui/demo/package.json +0 -35
- package/svelte-nodegui/demo/src/App.svelte +0 -29
- package/svelte-nodegui/demo/src/app.ts +0 -31
- package/svelte-nodegui/demo/tsconfig.json +0 -40
- package/svelte-nodegui/demo/webpack.config.js +0 -110
- package/svelte-nodegui/extras/assets/kitchen.png +0 -0
- package/svelte-nodegui/extras/assets/nodegui.png +0 -0
- package/svelte-nodegui/extras/assets/nodegui_white.png +0 -0
- package/svelte-nodegui/extras/assets/start_icon.png +0 -0
- package/svelte-nodegui/extras/legal/logo/thanks.md +0 -13
- package/svelte-nodegui/extras/legal/yode/LICENSE +0 -21
- package/svelte-nodegui/extras/legal/yoga/LICENSE +0 -0
- package/svelte-nodegui/extras/logo/nodegui-circle.png +0 -0
- package/svelte-nodegui/extras/logo/nodegui.png +0 -0
- package/svelte-nodegui/extras/logo/nodegui.svg +0 -4
- package/svelte-nodegui/nativescript-svelte-todo.gif +0 -0
- package/svelte-nodegui/package-lock.json +0 -1749
- package/svelte-nodegui/package.json +0 -44
- package/svelte-nodegui/repl-workers/bundler/commonjs.js +0 -58
- package/svelte-nodegui/repl-workers/bundler/index.js +0 -353
- package/svelte-nodegui/repl-workers/package-lock.json +0 -484
- package/svelte-nodegui/repl-workers/package.json +0 -21
- package/svelte-nodegui/repl-workers/rollup.config.js +0 -21
- package/svelte-nodegui/rollup.config.js +0 -81
- package/svelte-nodegui/scripts/create-pkg.js +0 -42
- package/svelte-nodegui/src/components/AsComponent.svelte +0 -16
- package/svelte-nodegui/src/components/SlotComponent.svelte +0 -4
- package/svelte-nodegui/src/components/Template.svelte +0 -10
- package/svelte-nodegui/src/components/Template.svelte.d.ts +0 -6
- package/svelte-nodegui/src/components/index.ts +0 -2
- package/svelte-nodegui/src/dom/index.ts +0 -132
- package/svelte-nodegui/src/dom/nativescript-vue-next/LICENCE +0 -21
- package/svelte-nodegui/src/dom/nativescript-vue-next/index.ts +0 -19
- package/svelte-nodegui/src/dom/nativescript-vue-next/runtime/index.ts +0 -21
- package/svelte-nodegui/src/dom/nativescript-vue-next/runtime/nodes.ts +0 -890
- package/svelte-nodegui/src/dom/nativescript-vue-next/runtime/registry.ts +0 -262
- package/svelte-nodegui/src/dom/nativescript-vue-next/runtime/runtimeHelpers.ts +0 -20
- package/svelte-nodegui/src/dom/react-nodegui/LICENSE +0 -21
- package/svelte-nodegui/src/dom/react-nodegui/src/components/AbstractComponents/RNAbstractButton.ts +0 -67
- package/svelte-nodegui/src/dom/react-nodegui/src/components/Action/RNAction.ts +0 -146
- package/svelte-nodegui/src/dom/react-nodegui/src/components/Action/index.ts +0 -37
- package/svelte-nodegui/src/dom/react-nodegui/src/components/AnimatedImage/RNAnimatedImage.ts +0 -76
- package/svelte-nodegui/src/dom/react-nodegui/src/components/AnimatedImage/index.ts +0 -45
- package/svelte-nodegui/src/dom/react-nodegui/src/components/BoxView/RNBoxView.ts +0 -99
- package/svelte-nodegui/src/dom/react-nodegui/src/components/BoxView/index.ts +0 -49
- package/svelte-nodegui/src/dom/react-nodegui/src/components/Button/RNButton.ts +0 -71
- package/svelte-nodegui/src/dom/react-nodegui/src/components/Button/index.ts +0 -49
- package/svelte-nodegui/src/dom/react-nodegui/src/components/CheckBox/RNCheckBox.ts +0 -71
- package/svelte-nodegui/src/dom/react-nodegui/src/components/CheckBox/index.ts +0 -50
- package/svelte-nodegui/src/dom/react-nodegui/src/components/ComboBox/RNComboBox.ts +0 -118
- package/svelte-nodegui/src/dom/react-nodegui/src/components/ComboBox/index.ts +0 -50
- package/svelte-nodegui/src/dom/react-nodegui/src/components/Dial/RNDial.ts +0 -69
- package/svelte-nodegui/src/dom/react-nodegui/src/components/Dial/index.ts +0 -41
- package/svelte-nodegui/src/dom/react-nodegui/src/components/GridView/GridColumn/RNGridColumn.ts +0 -95
- package/svelte-nodegui/src/dom/react-nodegui/src/components/GridView/GridColumn/index.ts +0 -49
- package/svelte-nodegui/src/dom/react-nodegui/src/components/GridView/GridRow/RNGridRow.ts +0 -141
- package/svelte-nodegui/src/dom/react-nodegui/src/components/GridView/GridRow/index.ts +0 -47
- package/svelte-nodegui/src/dom/react-nodegui/src/components/GridView/RNGridView.ts +0 -185
- package/svelte-nodegui/src/dom/react-nodegui/src/components/GridView/index.ts +0 -51
- package/svelte-nodegui/src/dom/react-nodegui/src/components/GridView/utils.ts +0 -59
- package/svelte-nodegui/src/dom/react-nodegui/src/components/Image/RNImage.ts +0 -135
- package/svelte-nodegui/src/dom/react-nodegui/src/components/Image/index.ts +0 -46
- package/svelte-nodegui/src/dom/react-nodegui/src/components/LineEdit/RNLineEdit.ts +0 -82
- package/svelte-nodegui/src/dom/react-nodegui/src/components/LineEdit/index.ts +0 -41
- package/svelte-nodegui/src/dom/react-nodegui/src/components/Menu/RNMenu.ts +0 -49
- package/svelte-nodegui/src/dom/react-nodegui/src/components/Menu/index.ts +0 -44
- package/svelte-nodegui/src/dom/react-nodegui/src/components/MenuBar/RNMenuBar.ts +0 -51
- package/svelte-nodegui/src/dom/react-nodegui/src/components/MenuBar/index.ts +0 -42
- package/svelte-nodegui/src/dom/react-nodegui/src/components/PlainTextEdit/RNPlainTextEdit.ts +0 -82
- package/svelte-nodegui/src/dom/react-nodegui/src/components/PlainTextEdit/index.ts +0 -44
- package/svelte-nodegui/src/dom/react-nodegui/src/components/ProgressBar/RNProgressBar.ts +0 -78
- package/svelte-nodegui/src/dom/react-nodegui/src/components/ProgressBar/index.ts +0 -43
- package/svelte-nodegui/src/dom/react-nodegui/src/components/RadioButton/RNRadioButton.ts +0 -50
- package/svelte-nodegui/src/dom/react-nodegui/src/components/RadioButton/index.ts +0 -43
- package/svelte-nodegui/src/dom/react-nodegui/src/components/ScrollArea/RNScrollArea.ts +0 -51
- package/svelte-nodegui/src/dom/react-nodegui/src/components/ScrollArea/index.ts +0 -44
- package/svelte-nodegui/src/dom/react-nodegui/src/components/Slider/RNSlider.ts +0 -97
- package/svelte-nodegui/src/dom/react-nodegui/src/components/Slider/index.ts +0 -46
- package/svelte-nodegui/src/dom/react-nodegui/src/components/SpinBox/RNSpinBox.ts +0 -88
- package/svelte-nodegui/src/dom/react-nodegui/src/components/SpinBox/index.ts +0 -49
- package/svelte-nodegui/src/dom/react-nodegui/src/components/Svg/RNSvg.ts +0 -67
- package/svelte-nodegui/src/dom/react-nodegui/src/components/Svg/index.ts +0 -43
- package/svelte-nodegui/src/dom/react-nodegui/src/components/SystemTrayIcon/RNSystemTrayIcon.ts +0 -141
- package/svelte-nodegui/src/dom/react-nodegui/src/components/SystemTrayIcon/index.ts +0 -43
- package/svelte-nodegui/src/dom/react-nodegui/src/components/Tab/RNTab.ts +0 -69
- package/svelte-nodegui/src/dom/react-nodegui/src/components/Tab/index.ts +0 -48
- package/svelte-nodegui/src/dom/react-nodegui/src/components/TabItem/RNTabItem.ts +0 -72
- package/svelte-nodegui/src/dom/react-nodegui/src/components/TabItem/index.ts +0 -40
- package/svelte-nodegui/src/dom/react-nodegui/src/components/Text/RNText.ts +0 -65
- package/svelte-nodegui/src/dom/react-nodegui/src/components/Text/index.ts +0 -49
- package/svelte-nodegui/src/dom/react-nodegui/src/components/View/RNView.ts +0 -306
- package/svelte-nodegui/src/dom/react-nodegui/src/components/View/index.ts +0 -44
- package/svelte-nodegui/src/dom/react-nodegui/src/components/Window/RNWindow.ts +0 -66
- package/svelte-nodegui/src/dom/react-nodegui/src/components/Window/index.ts +0 -50
- package/svelte-nodegui/src/dom/react-nodegui/src/components/config.ts +0 -95
- package/svelte-nodegui/src/dom/react-nodegui/src/index.ts +0 -52
- package/svelte-nodegui/src/dom/react-nodegui/src/reconciler/index.ts +0 -226
- package/svelte-nodegui/src/dom/react-nodegui/src/utils/decoupleFromReact.ts +0 -2
- package/svelte-nodegui/src/dom/react-nodegui/src/utils/helpers.ts +0 -14
- package/svelte-nodegui/src/dom/shared/Logger.ts +0 -16
- package/svelte-nodegui/src/dom/shared/index.ts +0 -1
- package/svelte-nodegui/src/dom/svelte/HeadElement.ts +0 -41
- package/svelte-nodegui/src/dom/svelte/RNObject.ts +0 -95
- package/svelte-nodegui/src/dom/svelte/StyleElement.ts +0 -92
- package/svelte-nodegui/src/dom/svelte/SvelteNodeGUIDocument.ts +0 -124
- package/svelte-nodegui/src/dom/svelte/TemplateElement.ts +0 -16
- package/svelte-nodegui/src/dom/svelte-elements.ts +0 -111
- package/svelte-nodegui/src/index.ts +0 -62
- package/svelte-nodegui/src/svelte-nodegui.ts +0 -159
- package/svelte-nodegui/src/transitions/bezier.ts +0 -112
- package/svelte-nodegui/src/transitions/index.ts +0 -227
- package/svelte-nodegui/tsconfig.json +0 -19
- package/svelte-nodegui/website/README.md +0 -33
- package/svelte-nodegui/website/blog/2019-05-30-welcome.md +0 -12
- package/svelte-nodegui/website/docs/api/classes/renderer.md +0 -49
- package/svelte-nodegui/website/docs/api/classes/rnaction.md +0 -608
- package/svelte-nodegui/website/docs/api/classes/rngridcolumn.md +0 -232
- package/svelte-nodegui/website/docs/api/classes/rngridrow.md +0 -247
- package/svelte-nodegui/website/docs/api/classes/rnmenu.md +0 -1337
- package/svelte-nodegui/website/docs/api/classes/rnmenubar.md +0 -1341
- package/svelte-nodegui/website/docs/api/globals.md +0 -832
- package/svelte-nodegui/website/docs/api/index.md +0 -0
- package/svelte-nodegui/website/docs/api/interfaces/_react_proxy_.reactproxycomponent.md +0 -38
- package/svelte-nodegui/website/docs/api/interfaces/abstractbuttonprops.md +0 -306
- package/svelte-nodegui/website/docs/api/interfaces/actionprops.md +0 -115
- package/svelte-nodegui/website/docs/api/interfaces/animatedimageprops.md +0 -297
- package/svelte-nodegui/website/docs/api/interfaces/boxviewprops.md +0 -245
- package/svelte-nodegui/website/docs/api/interfaces/buttonprops.md +0 -313
- package/svelte-nodegui/website/docs/api/interfaces/checkboxprops.md +0 -313
- package/svelte-nodegui/website/docs/api/interfaces/comboboxprops.md +0 -343
- package/svelte-nodegui/website/docs/api/interfaces/datawithoffset.md +0 -32
- package/svelte-nodegui/website/docs/api/interfaces/dialprops.md +0 -259
- package/svelte-nodegui/website/docs/api/interfaces/gridviewprops.md +0 -273
- package/svelte-nodegui/website/docs/api/interfaces/imageprops.md +0 -311
- package/svelte-nodegui/website/docs/api/interfaces/lineeditprops.md +0 -266
- package/svelte-nodegui/website/docs/api/interfaces/menubarprops.md +0 -245
- package/svelte-nodegui/website/docs/api/interfaces/menuprops.md +0 -245
- package/svelte-nodegui/website/docs/api/interfaces/plaintexteditprops.md +0 -259
- package/svelte-nodegui/website/docs/api/interfaces/progressbarprops.md +0 -266
- package/svelte-nodegui/website/docs/api/interfaces/radiobuttonprops.md +0 -282
- package/svelte-nodegui/website/docs/api/interfaces/scrollareaprops.md +0 -245
- package/svelte-nodegui/website/docs/api/interfaces/sliderprops.md +0 -329
- package/svelte-nodegui/website/docs/api/interfaces/spinboxprops.md +0 -273
- package/svelte-nodegui/website/docs/api/interfaces/systemtrayiconprops.md +0 -97
- package/svelte-nodegui/website/docs/api/interfaces/tabitemprops.md +0 -28
- package/svelte-nodegui/website/docs/api/interfaces/tabprops.md +0 -245
- package/svelte-nodegui/website/docs/api/interfaces/textprops.md +0 -277
- package/svelte-nodegui/website/docs/api/interfaces/viewprops.md +0 -261
- package/svelte-nodegui/website/docs/api/interfaces/windowprops.md +0 -245
- package/svelte-nodegui/website/docs/api/modules/_react_proxy_.md +0 -29
- package/svelte-nodegui/website/docs/doc1.md +0 -162
- package/svelte-nodegui/website/docs/guides/custom-nodegui-native-plugin.md +0 -6
- package/svelte-nodegui/website/docs/guides/debugging-in-vscode.md +0 -39
- package/svelte-nodegui/website/docs/guides/debugging.md +0 -59
- package/svelte-nodegui/website/docs/guides/getting-started.md +0 -141
- package/svelte-nodegui/website/docs/guides/handle-events.md +0 -188
- package/svelte-nodegui/website/docs/guides/images.md +0 -62
- package/svelte-nodegui/website/docs/guides/layout.md +0 -281
- package/svelte-nodegui/website/docs/guides/networking.md +0 -31
- package/svelte-nodegui/website/docs/guides/packaging.md +0 -32
- package/svelte-nodegui/website/docs/guides/scroll-view.md +0 -69
- package/svelte-nodegui/website/docs/guides/styling.md +0 -208
- package/svelte-nodegui/website/docs/guides/tutorial.md +0 -82
- package/svelte-nodegui/website/docs/guides/using-native-node-modules.md +0 -55
- package/svelte-nodegui/website/docs/mdx.md +0 -22
- package/svelte-nodegui/website/docs/scripts/fixdocs.js +0 -21
- package/svelte-nodegui/website/docusaurus.config.js +0 -131
- package/svelte-nodegui/website/package.json +0 -33
- package/svelte-nodegui/website/sidebars.js +0 -77
- package/svelte-nodegui/website/src/components/CodeExample.js +0 -42
- package/svelte-nodegui/website/src/components/CreateNativeApps.js +0 -46
- package/svelte-nodegui/website/src/components/Features.js +0 -62
- package/svelte-nodegui/website/src/components/Hero.js +0 -85
- package/svelte-nodegui/website/src/components/SplitView.js +0 -18
- package/svelte-nodegui/website/src/components/Talks.js +0 -68
- package/svelte-nodegui/website/src/components/Try.js +0 -83
- package/svelte-nodegui/website/src/components/common.js +0 -41
- package/svelte-nodegui/website/src/components/styles.css +0 -61
- package/svelte-nodegui/website/src/css/custom.css +0 -34
- package/svelte-nodegui/website/src/pages/index.js +0 -32
- package/svelte-nodegui/website/src/pages/styles.module.css +0 -35
- package/svelte-nodegui/website/static/CNAME +0 -1
- package/svelte-nodegui/website/static/img/box-layout-1.png +0 -0
- package/svelte-nodegui/website/static/img/box-layout-2.png +0 -0
- package/svelte-nodegui/website/static/img/code-sample.png +0 -0
- package/svelte-nodegui/website/static/img/demo.png +0 -0
- package/svelte-nodegui/website/static/img/favicon.ico +0 -0
- package/svelte-nodegui/website/static/img/flex-layout-1.png +0 -0
- package/svelte-nodegui/website/static/img/grid-layout-1.png +0 -0
- package/svelte-nodegui/website/static/img/logo-circle.png +0 -0
- package/svelte-nodegui/website/static/img/logo.png +0 -0
- package/svelte-nodegui/website/static/img/logo.svg +0 -5
- package/svelte-nodegui/website/static/img/logox200.png +0 -0
- package/svelte-nodegui/website/static/img/undraw_building_websites.svg +0 -1
- package/svelte-nodegui/website/static/img/undraw_code_review.svg +0 -1
- package/svelte-nodegui/website/static/img/undraw_docusaurus_mountain.svg +0 -170
- package/svelte-nodegui/website/static/img/undraw_docusaurus_react.svg +0 -169
- package/svelte-nodegui/website/static/img/undraw_docusaurus_tree.svg +0 -1
- package/svelte-nodegui/website/static/img/undraw_react.svg +0 -1
- package/svelte-nodegui/website/static/img/undraw_website_setup.svg +0 -1
- package/svelte-nodegui/website/static/img/undraw_windows.svg +0 -11
- package/svelte-nodegui/website/website/sidebars.js +0 -32
- package/svelte-nodegui/website/yarn.lock +0 -10533
package/svelte-nodegui/src/dom/react-nodegui/src/components/GridView/GridColumn/RNGridColumn.ts
DELETED
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
import type { FunctionComponentElement } from "../../../utils/decoupleFromReact";
|
|
2
|
-
import { Component, NodeWidget } from "@nodegui/nodegui";
|
|
3
|
-
import { RNComponent } from "../../config";
|
|
4
|
-
import { RNGridRow } from "../GridRow/RNGridRow";
|
|
5
|
-
|
|
6
|
-
export type GridColumnProps = {
|
|
7
|
-
/**
|
|
8
|
-
* The number of horizontal units to occupy
|
|
9
|
-
*/
|
|
10
|
-
width?: number;
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
const setGridColumnProps = (
|
|
14
|
-
widget: RNGridColumn,
|
|
15
|
-
parentRow: RNGridRow,
|
|
16
|
-
newProps: GridColumnProps,
|
|
17
|
-
oldProps: GridColumnProps
|
|
18
|
-
) => {
|
|
19
|
-
if (widget.actualWidget) {
|
|
20
|
-
// TODO: Optimize this
|
|
21
|
-
parentRow.parentGrid?.layout?.removeWidget(widget.actualWidget);
|
|
22
|
-
parentRow.parentGrid?.layout?.addWidget(
|
|
23
|
-
widget.actualWidget,
|
|
24
|
-
parentRow.rowIndex ?? 0,
|
|
25
|
-
widget.columnIndex ?? 0,
|
|
26
|
-
parentRow.height ?? 1,
|
|
27
|
-
widget.width ?? 1
|
|
28
|
-
);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
const setter: GridColumnProps = {
|
|
32
|
-
set width(width: number) {
|
|
33
|
-
widget.width = width;
|
|
34
|
-
},
|
|
35
|
-
};
|
|
36
|
-
Object.assign(setter, newProps);
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
export class RNGridColumn extends Component implements RNComponent {
|
|
40
|
-
native: any;
|
|
41
|
-
actualWidget?: NodeWidget<any>;
|
|
42
|
-
parentRow?: RNGridRow;
|
|
43
|
-
latestProps?: GridColumnProps;
|
|
44
|
-
prevProps?: GridColumnProps;
|
|
45
|
-
columnIndex?: number;
|
|
46
|
-
width?: number;
|
|
47
|
-
|
|
48
|
-
setParentRowAndUpdateProps(parentRow: RNGridRow, index: number): void {
|
|
49
|
-
this.parentRow = parentRow;
|
|
50
|
-
this.columnIndex = index;
|
|
51
|
-
setGridColumnProps(
|
|
52
|
-
this,
|
|
53
|
-
parentRow,
|
|
54
|
-
this.latestProps ?? {},
|
|
55
|
-
this.prevProps ?? {}
|
|
56
|
-
);
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
remove(): void {
|
|
60
|
-
if (!this.actualWidget) {
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
this.parentRow?.parentGrid?.layout?.removeWidget(this.actualWidget);
|
|
65
|
-
this.actualWidget.close();
|
|
66
|
-
this.actualWidget = undefined;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
/* RNComponent */
|
|
70
|
-
|
|
71
|
-
setProps(newProps: GridColumnProps, oldProps: GridColumnProps): void {
|
|
72
|
-
if (this.parentRow) {
|
|
73
|
-
setGridColumnProps(this, this.parentRow, newProps, oldProps);
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
this.latestProps = newProps;
|
|
77
|
-
this.prevProps = oldProps;
|
|
78
|
-
}
|
|
79
|
-
appendInitialChild(child: NodeWidget<any>): void {
|
|
80
|
-
if (this.actualWidget) {
|
|
81
|
-
throw new Error("Grid column can have only one child");
|
|
82
|
-
}
|
|
83
|
-
this.actualWidget = child;
|
|
84
|
-
}
|
|
85
|
-
appendChild(child: NodeWidget<any>): void {
|
|
86
|
-
this.appendInitialChild(child);
|
|
87
|
-
}
|
|
88
|
-
insertBefore(child: NodeWidget<any>, beforeChild: NodeWidget<any>): void {
|
|
89
|
-
this.appendInitialChild(child);
|
|
90
|
-
}
|
|
91
|
-
removeChild(child: NodeWidget<any>): void {
|
|
92
|
-
this.remove();
|
|
93
|
-
}
|
|
94
|
-
static tagName: string = "gridcolumn";
|
|
95
|
-
}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import type { Fiber } from "../../../utils/decoupleFromReact";
|
|
2
|
-
import { GridColumnProps, RNGridColumn } from "./RNGridColumn";
|
|
3
|
-
import { AppContainer } from "../../../reconciler";
|
|
4
|
-
import { registerComponent, ComponentConfig } from "../../config";
|
|
5
|
-
|
|
6
|
-
class GridColumnConfig extends ComponentConfig {
|
|
7
|
-
tagName = RNGridColumn.tagName;
|
|
8
|
-
shouldSetTextContent(nextProps: GridColumnProps): boolean {
|
|
9
|
-
return false;
|
|
10
|
-
}
|
|
11
|
-
createInstance(
|
|
12
|
-
newProps: GridColumnProps,
|
|
13
|
-
rootInstance: AppContainer,
|
|
14
|
-
context: any,
|
|
15
|
-
workInProgress: Fiber
|
|
16
|
-
): RNGridColumn {
|
|
17
|
-
const widget = new RNGridColumn();
|
|
18
|
-
widget.setProps(newProps, newProps);
|
|
19
|
-
return widget;
|
|
20
|
-
}
|
|
21
|
-
finalizeInitialChildren(
|
|
22
|
-
instance: RNGridColumn,
|
|
23
|
-
newProps: GridColumnProps,
|
|
24
|
-
rootContainerInstance: AppContainer,
|
|
25
|
-
context: any
|
|
26
|
-
): boolean {
|
|
27
|
-
return true;
|
|
28
|
-
}
|
|
29
|
-
commitMount(
|
|
30
|
-
instance: RNGridColumn,
|
|
31
|
-
newProps: GridColumnProps,
|
|
32
|
-
internalInstanceHandle: any
|
|
33
|
-
): void {
|
|
34
|
-
return;
|
|
35
|
-
}
|
|
36
|
-
commitUpdate(
|
|
37
|
-
instance: RNGridColumn,
|
|
38
|
-
updatePayload: any,
|
|
39
|
-
oldProps: GridColumnProps,
|
|
40
|
-
newProps: GridColumnProps,
|
|
41
|
-
finishedWork: Fiber
|
|
42
|
-
): void {
|
|
43
|
-
instance.setProps(newProps, oldProps);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
export const GridColumn = registerComponent<GridColumnProps>(
|
|
48
|
-
new GridColumnConfig()
|
|
49
|
-
);
|
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
import type { FunctionComponentElement } from "../../../utils/decoupleFromReact";
|
|
2
|
-
import { GridColumnProps, RNGridColumn } from "../GridColumn/RNGridColumn";
|
|
3
|
-
import { Component } from "@nodegui/nodegui";
|
|
4
|
-
import { RNComponent } from "../../config";
|
|
5
|
-
import { RNGridView } from "../RNGridView";
|
|
6
|
-
import {
|
|
7
|
-
DataWithOffset,
|
|
8
|
-
updateDisplacedChildren,
|
|
9
|
-
offsetForIndex,
|
|
10
|
-
} from "../utils";
|
|
11
|
-
|
|
12
|
-
export type GridRowProps = {
|
|
13
|
-
children:
|
|
14
|
-
| Array<FunctionComponentElement<GridColumnProps>>
|
|
15
|
-
| FunctionComponentElement<GridColumnProps>;
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* The number of vertical units to occupy
|
|
19
|
-
*/
|
|
20
|
-
height?: number;
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
const setGridRowProps = (
|
|
24
|
-
widget: RNGridRow,
|
|
25
|
-
parentGrid: RNGridView,
|
|
26
|
-
newProps: Omit<GridRowProps, "children">,
|
|
27
|
-
oldProps: Omit<GridRowProps, "children">
|
|
28
|
-
) => {
|
|
29
|
-
const setter: Omit<GridRowProps, "children"> = {
|
|
30
|
-
set height(height: number) {
|
|
31
|
-
widget.height = height;
|
|
32
|
-
},
|
|
33
|
-
};
|
|
34
|
-
Object.assign(setter, newProps);
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
export class RNGridRow extends Component implements RNComponent {
|
|
38
|
-
native: any;
|
|
39
|
-
parentGrid?: RNGridView;
|
|
40
|
-
latestProps?: GridRowProps;
|
|
41
|
-
prevProps?: GridRowProps;
|
|
42
|
-
childColumns: Array<DataWithOffset<RNGridColumn>> = [];
|
|
43
|
-
rowIndex?: number;
|
|
44
|
-
height?: number;
|
|
45
|
-
|
|
46
|
-
setParentGridAndUpdateProps(parentGrid: RNGridView, index: number): void {
|
|
47
|
-
this.parentGrid = parentGrid;
|
|
48
|
-
this.rowIndex = index;
|
|
49
|
-
setGridRowProps(
|
|
50
|
-
this,
|
|
51
|
-
parentGrid,
|
|
52
|
-
this.latestProps ?? {},
|
|
53
|
-
this.prevProps ?? {}
|
|
54
|
-
);
|
|
55
|
-
|
|
56
|
-
this.updateChildren();
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
updateChildren(startIndex = 0): void {
|
|
60
|
-
updateDisplacedChildren<RNGridColumn, RNGridRow>(
|
|
61
|
-
startIndex,
|
|
62
|
-
this.childColumns,
|
|
63
|
-
this,
|
|
64
|
-
"width",
|
|
65
|
-
"setParentRowAndUpdateProps"
|
|
66
|
-
);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
remove(): void {
|
|
70
|
-
this.childColumns.forEach(({ data }) => data.remove());
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
/* RNComponent */
|
|
74
|
-
|
|
75
|
-
setProps(newProps: GridRowProps, oldProps: GridRowProps): void {
|
|
76
|
-
if (this.parentGrid) {
|
|
77
|
-
setGridRowProps(this, this.parentGrid, newProps, oldProps);
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
this.latestProps = newProps;
|
|
81
|
-
this.prevProps = oldProps;
|
|
82
|
-
}
|
|
83
|
-
appendInitialChild(child: RNGridColumn): void {
|
|
84
|
-
this.appendChild(child);
|
|
85
|
-
}
|
|
86
|
-
appendChild(child: RNGridColumn): void {
|
|
87
|
-
if (!(child instanceof RNGridColumn)) {
|
|
88
|
-
throw new Error("GridColumn is the only supported child of GridRow");
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
const offset = offsetForIndex<RNGridColumn>(
|
|
92
|
-
this.childColumns.length,
|
|
93
|
-
this.childColumns,
|
|
94
|
-
"width"
|
|
95
|
-
);
|
|
96
|
-
|
|
97
|
-
child.setParentRowAndUpdateProps(this, offset);
|
|
98
|
-
|
|
99
|
-
this.childColumns.push({
|
|
100
|
-
offset,
|
|
101
|
-
data: child,
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
insertBefore(child: RNGridColumn, beforeChild: RNGridColumn): void {
|
|
105
|
-
const prevIndex = this.childColumns.findIndex(
|
|
106
|
-
({ data }) => data === beforeChild
|
|
107
|
-
);
|
|
108
|
-
|
|
109
|
-
if (prevIndex === -1) {
|
|
110
|
-
throw new Error(
|
|
111
|
-
"Attempted to insert child GridColumn before nonexistent column"
|
|
112
|
-
);
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
const offset = offsetForIndex<RNGridColumn>(
|
|
116
|
-
prevIndex,
|
|
117
|
-
this.childColumns,
|
|
118
|
-
"width"
|
|
119
|
-
);
|
|
120
|
-
|
|
121
|
-
this.childColumns.splice(prevIndex, 0, {
|
|
122
|
-
offset,
|
|
123
|
-
data: child,
|
|
124
|
-
});
|
|
125
|
-
// Update displaced children
|
|
126
|
-
this.updateChildren(prevIndex);
|
|
127
|
-
}
|
|
128
|
-
removeChild(child: RNGridColumn): void {
|
|
129
|
-
const prevIndex = this.childColumns.findIndex(({ data }) => data === child);
|
|
130
|
-
|
|
131
|
-
if (prevIndex !== -1) {
|
|
132
|
-
this.childColumns.splice(prevIndex, 1);
|
|
133
|
-
this.updateChildren(prevIndex);
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
// Actually remove child from layout
|
|
137
|
-
child.remove();
|
|
138
|
-
child.parentRow = undefined;
|
|
139
|
-
}
|
|
140
|
-
static tagName: string = "gridrow";
|
|
141
|
-
}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import type { Fiber } from "../../../utils/decoupleFromReact";
|
|
2
|
-
import { AppContainer } from "../../../reconciler";
|
|
3
|
-
import { registerComponent, ComponentConfig } from "../../config";
|
|
4
|
-
import { RNGridRow, GridRowProps } from "./RNGridRow";
|
|
5
|
-
|
|
6
|
-
class GridRowConfig extends ComponentConfig {
|
|
7
|
-
tagName = RNGridRow.tagName;
|
|
8
|
-
shouldSetTextContent(nextProps: GridRowProps): boolean {
|
|
9
|
-
return false;
|
|
10
|
-
}
|
|
11
|
-
createInstance(
|
|
12
|
-
newProps: GridRowProps,
|
|
13
|
-
rootInstance: AppContainer,
|
|
14
|
-
context: any,
|
|
15
|
-
workInProgress: Fiber
|
|
16
|
-
): RNGridRow {
|
|
17
|
-
const widget = new RNGridRow();
|
|
18
|
-
widget.setProps(newProps, newProps);
|
|
19
|
-
return widget;
|
|
20
|
-
}
|
|
21
|
-
finalizeInitialChildren(
|
|
22
|
-
instance: RNGridRow,
|
|
23
|
-
newProps: GridRowProps,
|
|
24
|
-
rootContainerInstance: AppContainer,
|
|
25
|
-
context: any
|
|
26
|
-
): boolean {
|
|
27
|
-
return true;
|
|
28
|
-
}
|
|
29
|
-
commitMount(
|
|
30
|
-
instance: RNGridRow,
|
|
31
|
-
newProps: GridRowProps,
|
|
32
|
-
internalInstanceHandle: any
|
|
33
|
-
): void {
|
|
34
|
-
return;
|
|
35
|
-
}
|
|
36
|
-
commitUpdate(
|
|
37
|
-
instance: RNGridRow,
|
|
38
|
-
updatePayload: any,
|
|
39
|
-
oldProps: GridRowProps,
|
|
40
|
-
newProps: GridRowProps,
|
|
41
|
-
finishedWork: Fiber
|
|
42
|
-
): void {
|
|
43
|
-
instance.setProps(newProps, oldProps);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
export const GridRow = registerComponent<GridRowProps>(new GridRowConfig());
|
|
@@ -1,185 +0,0 @@
|
|
|
1
|
-
import type { FunctionComponentElement } from "../../utils/decoupleFromReact";
|
|
2
|
-
import { QGridLayoutSignals, QGridLayout, QWidget } from "@nodegui/nodegui";
|
|
3
|
-
import { ViewProps, setViewProps } from "../View/RNView";
|
|
4
|
-
import { RNComponent } from "../config";
|
|
5
|
-
import { RNGridRow, GridRowProps } from "./GridRow/RNGridRow";
|
|
6
|
-
import {
|
|
7
|
-
DataWithOffset,
|
|
8
|
-
offsetForIndex,
|
|
9
|
-
updateDisplacedChildren,
|
|
10
|
-
} from "./utils";
|
|
11
|
-
|
|
12
|
-
export type GridViewColumnProps = {
|
|
13
|
-
[ColumnIndex: number]: {
|
|
14
|
-
stretch?: number;
|
|
15
|
-
minWidth?: number;
|
|
16
|
-
};
|
|
17
|
-
};
|
|
18
|
-
|
|
19
|
-
export type GridViewRowProps = {
|
|
20
|
-
[RowIndex: number]: {
|
|
21
|
-
stretch?: number;
|
|
22
|
-
minHeight?: number;
|
|
23
|
-
};
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
export interface GridViewProps extends ViewProps<QGridLayoutSignals> {
|
|
27
|
-
children:
|
|
28
|
-
| Array<FunctionComponentElement<GridRowProps>>
|
|
29
|
-
| FunctionComponentElement<GridRowProps>;
|
|
30
|
-
|
|
31
|
-
columnProps?: GridViewColumnProps;
|
|
32
|
-
rowProps?: GridViewRowProps;
|
|
33
|
-
|
|
34
|
-
horizontalSpacing?: number;
|
|
35
|
-
verticalSpacing?: number;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
const setGridViewProps = (
|
|
39
|
-
widget: RNGridView,
|
|
40
|
-
newProps: Omit<GridViewProps, "children">,
|
|
41
|
-
oldProps: Omit<GridViewProps, "children">
|
|
42
|
-
) => {
|
|
43
|
-
const setter: Omit<GridViewProps, "children"> = {
|
|
44
|
-
set horizontalSpacing(spacing: number) {
|
|
45
|
-
widget.layout?.setHorizontalSpacing(spacing);
|
|
46
|
-
},
|
|
47
|
-
set verticalSpacing(spacing: number) {
|
|
48
|
-
widget.layout?.setVerticalSpacing(spacing);
|
|
49
|
-
},
|
|
50
|
-
set columnProps(props: GridViewColumnProps) {
|
|
51
|
-
for (const indexString of Object.keys(props)) {
|
|
52
|
-
const index = parseInt(indexString, 10);
|
|
53
|
-
const { stretch, minWidth } = props[index];
|
|
54
|
-
|
|
55
|
-
widget.layout?.setColumnStretch(index, stretch ?? 0);
|
|
56
|
-
widget.layout?.setColumnMinimumWidth(index, minWidth ?? 0);
|
|
57
|
-
}
|
|
58
|
-
},
|
|
59
|
-
set rowProps(props: GridViewRowProps) {
|
|
60
|
-
for (const indexString of Object.keys(props)) {
|
|
61
|
-
const index = parseInt(indexString, 10);
|
|
62
|
-
const { stretch, minHeight } = props[index];
|
|
63
|
-
|
|
64
|
-
widget.layout?.setRowStretch(index, stretch ?? 0);
|
|
65
|
-
widget.layout?.setRowMinimumHeight(index, minHeight ?? 0);
|
|
66
|
-
}
|
|
67
|
-
},
|
|
68
|
-
};
|
|
69
|
-
Object.assign(setter, newProps);
|
|
70
|
-
setViewProps(widget, newProps, oldProps);
|
|
71
|
-
};
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* @ignore
|
|
75
|
-
*/
|
|
76
|
-
export class RNGridView extends QWidget implements RNComponent {
|
|
77
|
-
native: any;
|
|
78
|
-
_layout?: QGridLayout;
|
|
79
|
-
initialProps?: GridViewProps;
|
|
80
|
-
childRows: Array<DataWithOffset<RNGridRow>> = [];
|
|
81
|
-
|
|
82
|
-
get layout() {
|
|
83
|
-
return this.layout;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
set layout(l: QGridLayout) {
|
|
87
|
-
this._layout = l;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
updateChildren(startIndex = 0): void {
|
|
91
|
-
updateDisplacedChildren<RNGridRow, RNGridView>(
|
|
92
|
-
startIndex,
|
|
93
|
-
this.childRows,
|
|
94
|
-
this,
|
|
95
|
-
"height",
|
|
96
|
-
"setParentGridAndUpdateProps"
|
|
97
|
-
);
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
/* RNComponent */
|
|
101
|
-
|
|
102
|
-
setProps(newProps: GridViewProps, oldProps: GridViewProps): void {
|
|
103
|
-
if (this.layout) {
|
|
104
|
-
setGridViewProps(this, newProps, oldProps);
|
|
105
|
-
} else {
|
|
106
|
-
this.initialProps = newProps;
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
appendInitialChild(child: RNGridRow): void {
|
|
110
|
-
this.appendChild(child);
|
|
111
|
-
}
|
|
112
|
-
appendChild(child: RNGridRow): void {
|
|
113
|
-
if (!(child instanceof RNGridRow)) {
|
|
114
|
-
throw new Error("GridRow is the only supported child of GridView");
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
const updateChild = () => {
|
|
118
|
-
const offset = offsetForIndex<RNGridRow>(
|
|
119
|
-
this.childRows.length,
|
|
120
|
-
this.childRows,
|
|
121
|
-
"height"
|
|
122
|
-
);
|
|
123
|
-
|
|
124
|
-
child.setParentGridAndUpdateProps(this, offset);
|
|
125
|
-
|
|
126
|
-
this.childRows.push({
|
|
127
|
-
offset,
|
|
128
|
-
data: child,
|
|
129
|
-
});
|
|
130
|
-
};
|
|
131
|
-
|
|
132
|
-
if (this.layout) {
|
|
133
|
-
updateChild();
|
|
134
|
-
|
|
135
|
-
return;
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
const layout = new QGridLayout();
|
|
139
|
-
this.setLayout(layout);
|
|
140
|
-
this.layout = layout;
|
|
141
|
-
|
|
142
|
-
// Newly created layout, so set initial props
|
|
143
|
-
if (this.initialProps) {
|
|
144
|
-
setGridViewProps(this, this.initialProps, {});
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
updateChild();
|
|
148
|
-
}
|
|
149
|
-
insertBefore(child: RNGridRow, beforeChild: RNGridRow): void {
|
|
150
|
-
const prevIndex = this.childRows.findIndex(
|
|
151
|
-
({ data }) => data === beforeChild
|
|
152
|
-
);
|
|
153
|
-
|
|
154
|
-
if (prevIndex === -1) {
|
|
155
|
-
throw new Error(
|
|
156
|
-
"Attempted to insert child GridRow before nonexistent row"
|
|
157
|
-
);
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
const offset = offsetForIndex<RNGridRow>(
|
|
161
|
-
prevIndex,
|
|
162
|
-
this.childRows,
|
|
163
|
-
"height"
|
|
164
|
-
);
|
|
165
|
-
|
|
166
|
-
this.childRows.splice(prevIndex, 0, {
|
|
167
|
-
offset,
|
|
168
|
-
data: child,
|
|
169
|
-
});
|
|
170
|
-
// Update displaced children
|
|
171
|
-
this.updateChildren(prevIndex);
|
|
172
|
-
}
|
|
173
|
-
removeChild(child: RNGridRow): void {
|
|
174
|
-
const prevIndex = this.childRows.findIndex(({ data }) => data === child);
|
|
175
|
-
|
|
176
|
-
if (prevIndex !== -1) {
|
|
177
|
-
this.childRows.splice(prevIndex, 1);
|
|
178
|
-
this.updateChildren(prevIndex);
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
child.remove();
|
|
182
|
-
child.parentGrid = undefined;
|
|
183
|
-
}
|
|
184
|
-
static tagName: string = "gridview";
|
|
185
|
-
}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { registerComponent, ComponentConfig } from "../config";
|
|
2
|
-
import type { Fiber } from "../../utils/decoupleFromReact";
|
|
3
|
-
import { AppContainer } from "../../reconciler";
|
|
4
|
-
import { RNGridView, GridViewProps } from "./RNGridView";
|
|
5
|
-
|
|
6
|
-
class GridViewConfig extends ComponentConfig {
|
|
7
|
-
tagName = RNGridView.tagName;
|
|
8
|
-
shouldSetTextContent(nextProps: GridViewProps): boolean {
|
|
9
|
-
return false;
|
|
10
|
-
}
|
|
11
|
-
createInstance(
|
|
12
|
-
newProps: GridViewProps,
|
|
13
|
-
rootInstance: AppContainer,
|
|
14
|
-
context: any,
|
|
15
|
-
workInProgress: Fiber
|
|
16
|
-
): RNGridView {
|
|
17
|
-
const widget = new RNGridView();
|
|
18
|
-
widget.setProps(newProps, {
|
|
19
|
-
children: [],
|
|
20
|
-
});
|
|
21
|
-
return widget;
|
|
22
|
-
}
|
|
23
|
-
finalizeInitialChildren(
|
|
24
|
-
instance: RNGridView,
|
|
25
|
-
newProps: GridViewProps,
|
|
26
|
-
rootContainerInstance: AppContainer,
|
|
27
|
-
context: any
|
|
28
|
-
): boolean {
|
|
29
|
-
return true;
|
|
30
|
-
}
|
|
31
|
-
commitMount(
|
|
32
|
-
instance: RNGridView,
|
|
33
|
-
newProps: GridViewProps,
|
|
34
|
-
internalInstanceHandle: any
|
|
35
|
-
): void {
|
|
36
|
-
if (newProps.visible !== false) {
|
|
37
|
-
instance.show();
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
commitUpdate(
|
|
41
|
-
instance: RNGridView,
|
|
42
|
-
updatePayload: any,
|
|
43
|
-
oldProps: GridViewProps,
|
|
44
|
-
newProps: GridViewProps,
|
|
45
|
-
finishedWork: Fiber
|
|
46
|
-
): void {
|
|
47
|
-
instance.setProps(newProps, oldProps);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
export const GridView = registerComponent<GridViewProps>(new GridViewConfig());
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
export interface DataWithOffset<T> {
|
|
2
|
-
offset: number;
|
|
3
|
-
data: T;
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
type SetParentFunc<T> = (parent: T, index: number) => void;
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Extract the keys of type `T` matching type `TType`
|
|
10
|
-
*/
|
|
11
|
-
type KeysOfType<T, TType> = {
|
|
12
|
-
[Key in keyof T]-?: T[Key] extends TType | undefined ? Key : never;
|
|
13
|
-
}[keyof T];
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Show TypeScript that the fields we're interested in are of type `TType`
|
|
17
|
-
*/
|
|
18
|
-
type OnlyType<T, TType> = {
|
|
19
|
-
[Key in KeysOfType<T, TType>]?: TType;
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
export const offsetForIndex = <T>(
|
|
23
|
-
index: number,
|
|
24
|
-
items: Array<DataWithOffset<OnlyType<T, number>>>,
|
|
25
|
-
sizeKey: keyof OnlyType<T, number>
|
|
26
|
-
) => {
|
|
27
|
-
let offset = 0;
|
|
28
|
-
|
|
29
|
-
if (index > 0) {
|
|
30
|
-
const previousChild = items[index - 1];
|
|
31
|
-
offset = previousChild.offset + (previousChild.data[sizeKey] ?? 1);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
return offset;
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
type Allowed<TItem, TParent> = OnlyType<TItem, SetParentFunc<TParent>>;
|
|
38
|
-
export function updateDisplacedChildren<TItem, TParent>(
|
|
39
|
-
startIndex: number,
|
|
40
|
-
items: Array<
|
|
41
|
-
DataWithOffset<
|
|
42
|
-
OnlyType<TItem, number> & Allowed<TItem, TParent>
|
|
43
|
-
>
|
|
44
|
-
>,
|
|
45
|
-
parent: TParent,
|
|
46
|
-
sizeKey: keyof OnlyType<TItem, number>,
|
|
47
|
-
setParentFuncKey: keyof Allowed<TItem, TParent>
|
|
48
|
-
) {
|
|
49
|
-
let offset = offsetForIndex(startIndex, items, sizeKey);
|
|
50
|
-
|
|
51
|
-
for (let i = startIndex; i < items.length; i++) {
|
|
52
|
-
const displacedChild = items[i];
|
|
53
|
-
|
|
54
|
-
displacedChild.offset = offset;
|
|
55
|
-
displacedChild.data[setParentFuncKey]?.(parent, offset);
|
|
56
|
-
|
|
57
|
-
offset += displacedChild.data[sizeKey] ?? 1;
|
|
58
|
-
}
|
|
59
|
-
};
|