diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 000000000..d4caead03 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,5 @@ +{ + "tasks": { + "build": "npm run build:bundle" + } +} \ No newline at end of file diff --git a/.gitignore b/.gitignore index 0340ad986..d7a02101e 100644 --- a/.gitignore +++ b/.gitignore @@ -221,6 +221,4 @@ demo/release packages/**/*/dist/ demo/_data/version.yml -outjs/ -declaration/ -dist/ +declaration/ \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 033a22b7a..275cd349d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@egjs/flicking", - "version": "4.11.4-snapshot", + "version": "4.12.1-react19", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@egjs/flicking", - "version": "4.11.4-snapshot", + "version": "4.12.1-react19", "license": "MIT", "dependencies": { "@egjs/axes": "^3.9.1", diff --git a/package.json b/package.json index 449a03ddb..c24591696 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@egjs/flicking", - "version": "4.12.0-snapshot", + "version": "4.12.1-react19", "description": "Everyday 30 million people experience. It's reliable, flexible and extendable carousel.", "main": "dist/flicking.cjs.js", "module": "dist/flicking.esm.js", @@ -47,7 +47,7 @@ }, "repository": { "type": "git", - "url": "https://github.com/naver/egjs-flicking" + "url": "https://github.com/jtwite/egjs-flicking" }, "author": { "name": "NAVER Corp." diff --git a/packages/react-flicking/src/react-flicking/Flicking.tsx b/packages/react-flicking/src/react-flicking/Flicking.tsx index f12340ffe..4de33c5aa 100644 --- a/packages/react-flicking/src/react-flicking/Flicking.tsx +++ b/packages/react-flicking/src/react-flicking/Flicking.tsx @@ -332,9 +332,7 @@ class Flicking extends React.Component> : getRenderingPanels(vanillaFlicking, diff(origChildren, origChildren)) : origChildren; - return this.props.useFindDOMNode - ? children.map((child, idx) => {child}) - : children.map((child, idx) => {child}) + return children.map((child, idx) => {child}); } private _isFragment(child: React.ReactElement) { diff --git a/packages/react-flicking/src/react-flicking/NonStrictPanel.tsx b/packages/react-flicking/src/react-flicking/NonStrictPanel.tsx index 1543365df..6430d01fb 100644 --- a/packages/react-flicking/src/react-flicking/NonStrictPanel.tsx +++ b/packages/react-flicking/src/react-flicking/NonStrictPanel.tsx @@ -3,18 +3,20 @@ * egjs projects are licensed under the MIT license */ import * as React from "react"; -import { findDOMNode } from "react-dom"; class NonStrictPanel extends React.Component<{ children?: React.ReactElement }> { private _hide: boolean = false; + private _elRef: React.RefObject = React.createRef(); - public get nativeElement() { return findDOMNode(this) as HTMLElement; } + public get nativeElement() { return this._elRef.current!; } public get rendered() { return !this._hide; } public render() { return this._hide ? <> - : this.props.children; + : React.cloneElement(React.Children.only(this.props.children) as React.ReactElement, { + ref: this._elRef + }); } public show() { diff --git a/packages/react-flicking/src/react-flicking/ReactElementProvider.ts b/packages/react-flicking/src/react-flicking/ReactElementProvider.ts index 76205c9ce..2b9f9d0ca 100644 --- a/packages/react-flicking/src/react-flicking/ReactElementProvider.ts +++ b/packages/react-flicking/src/react-flicking/ReactElementProvider.ts @@ -7,21 +7,25 @@ import StrictPanel from "./StrictPanel"; import NonStrictPanel from "./NonStrictPanel"; class ReactElementProvider implements ElementProvider { - private _el: StrictPanel | NonStrictPanel; + private _elRef: React.RefObject; - public get element() { return this._el.nativeElement; } - public get rendered() { return this._el.rendered; } + public get element() { return this._elRef.current!; } + public get rendered() { return this._elRef.current !== null; } - public constructor(el: StrictPanel | NonStrictPanel) { - this._el = el; + public constructor(elRef: React.RefObject) { + this._elRef = elRef; } public show() { - this._el.show(); + if (this._elRef.current) { + this._elRef.current.style.display = ""; + } } public hide() { - this._el.hide(); + if (this._elRef.current) { + this._elRef.current.style.display = "none"; + } } } diff --git a/packages/react-flicking/src/react-flicking/ReactRenderer.ts b/packages/react-flicking/src/react-flicking/ReactRenderer.ts index 508836b10..217ed05a1 100644 --- a/packages/react-flicking/src/react-flicking/ReactRenderer.ts +++ b/packages/react-flicking/src/react-flicking/ReactRenderer.ts @@ -66,13 +66,13 @@ class ReactRenderer extends ExternalRenderer { protected _collectPanels() { const flicking = getFlickingAttached(this._flicking); const reactFlicking = this._reactFlicking; - const reactPanels = reactFlicking.reactPanels; + const reactPanels = reactFlicking.reactPanels.map(panel => panel.nativeElement); this._panels = this._strategy.collectPanels(flicking, reactPanels); } protected _createPanel(externalComponent: StrictPanel | NonStrictPanel | HTMLDivElement, options: PanelOptions) { - return this._strategy.createPanel(externalComponent, options); + return this._strategy.createPanel(externalComponent.nativeElement, options); } }