Plan 3 of the web embedding SDK: @zseven-w/op-web-sdk-react and -vue — thin read-only framework adapters over the TS core. Each: <DesignView> (canvas + viewer lifecycle), provider/inject of OpViewer, and read-only useDocument/useViewport/useActivePage. React via useSyncExternalStore (cache-invalidate-on-event); Vue via an async shallowRef provider so children inject the viewer after load. Self-contained (no pen-* deps; framework peer); React 5/5 + Vue 4/4 tests; both tsc clean.
20 lines
738 B
TypeScript
20 lines
738 B
TypeScript
import { describe, it, expect } from 'vitest';
|
|
import { renderHook } from '@testing-library/react';
|
|
import { makeMockViewer } from './mock-core.js';
|
|
import { DesignProvider, useViewer } from '../src/index.js';
|
|
import type { ReactNode } from 'react';
|
|
|
|
describe('useViewer', () => {
|
|
it('returns the provided viewer', () => {
|
|
const { viewer } = makeMockViewer();
|
|
const wrapper = ({ children }: { children: ReactNode }) => (
|
|
<DesignProvider viewer={viewer as never}>{children}</DesignProvider>
|
|
);
|
|
const { result } = renderHook(() => useViewer(), { wrapper });
|
|
expect(result.current).toBe(viewer);
|
|
});
|
|
it('throws without a provider', () => {
|
|
expect(() => renderHook(() => useViewer())).toThrow();
|
|
});
|
|
});
|