pptx-angular-viewer 1.1.48 → 1.1.50

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.
@@ -1,4 +1,4 @@
1
- import { CanvasTexture, SRGBColorSpace, LinearFilter, Shape, ExtrudeGeometry, MeshStandardMaterial, Color, Mesh, EdgesGeometry, LineBasicMaterial, LineSegments, PlaneGeometry, MeshBasicMaterial, Euler, Vector3, BufferGeometry, Line, Group, WebGLRenderer, Scene, PerspectiveCamera, AmbientLight, DirectionalLight } from 'three';
1
+ import { CanvasTexture, SRGBColorSpace, LinearFilter, RepeatWrapping, Shape, ExtrudeGeometry, MeshStandardMaterial, Color, Mesh, EdgesGeometry, LineBasicMaterial, LineSegments, PlaneGeometry, MeshBasicMaterial, Euler, Vector3, BufferGeometry, Line, Group, WebGLRenderer, Scene, PerspectiveCamera, AmbientLight, DirectionalLight } from 'three';
2
2
  import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';
3
3
 
4
4
  /**
@@ -86,6 +86,16 @@ function makeTextTexture(text, color, fontSize, footW, footH) {
86
86
  texture.colorSpace = SRGBColorSpace;
87
87
  texture.minFilter = LinearFilter;
88
88
  texture.magFilter = LinearFilter;
89
+ // Disable GPU-side flip: WebGL2 does not allow UNPACK_FLIP_Y_WEBGL for
90
+ // texImage3D targets (depth buffers, LUTs, shadow maps). Leaving flipY=true
91
+ // (the Three.js default) pollutes the global pixel-store state and causes
92
+ // "INVALID_OPERATION: texImage3D: FLIP_Y or PREMULTIPLY_ALPHA isn't allowed"
93
+ // errors. Compensate in UV space instead.
94
+ texture.flipY = false;
95
+ texture.premultiplyAlpha = false;
96
+ texture.wrapT = RepeatWrapping;
97
+ texture.repeat.set(1, -1);
98
+ texture.offset.set(0, 1);
89
99
  texture.needsUpdate = true;
90
100
  return { texture, worldWidth, worldHeight };
91
101
  }
@@ -355,4 +365,4 @@ function mountSmartArt3D(canvas, model, width, height, options = {}) {
355
365
  */
356
366
 
357
367
  export { mountSmartArt3D };
358
- //# sourceMappingURL=pptx-angular-viewer-index-BfKeZbQy.mjs.map
368
+ //# sourceMappingURL=pptx-angular-viewer-index-BbiIOY_Y.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pptx-angular-viewer-index-BbiIOY_Y.mjs","sources":["../../src/internal/shared-src/smartart-3d/text-texture.ts","../../src/internal/shared-src/smartart-3d/meshes.ts","../../src/internal/shared-src/smartart-3d/scene.ts","../../src/internal/shared-src/smartart-3d/index.ts"],"sourcesContent":["/**\n * Three.js SmartArt renderer - front-face text textures.\n *\n * Renders a node label onto an offscreen 2D canvas and wraps it as a\n * `THREE.CanvasTexture`, sized to sit on the extruded block's front face. Text\n * is word-wrapped and auto-shrunk to fit the node footprint. Returns `null` in\n * non-DOM environments (SSR / unit tests).\n */\n\nimport { CanvasTexture, LinearFilter, RepeatWrapping, SRGBColorSpace } from 'three';\n\n/** A built label texture plus the world-space plane size it should fill. */\nexport interface SmartArtTextTexture {\n\ttexture: CanvasTexture;\n\t/** Plane width in world (layout-pixel) units. */\n\tworldWidth: number;\n\t/** Plane height in world units. */\n\tworldHeight: number;\n}\n\n/** Supersampling factor for crisp text at oblique camera angles. */\nconst SUPERSAMPLE = 4;\n/** Fraction of the footprint the text plane occupies (inset padding). */\nconst FILL = 0.86;\n\n/** Greedily word-wrap `text` to lines that fit `maxWidth` at the given font. */\nfunction wrapLines(ctx: CanvasRenderingContext2D, text: string, maxWidth: number): string[] {\n\tconst words = text.split(/\\s+/u).filter(Boolean);\n\tif (words.length === 0) {\n\t\treturn [];\n\t}\n\tconst lines: string[] = [];\n\tlet line = words[0];\n\tfor (let i = 1; i < words.length; i++) {\n\t\tconst candidate = `${line} ${words[i]}`;\n\t\tif (ctx.measureText(candidate).width <= maxWidth) {\n\t\t\tline = candidate;\n\t\t} else {\n\t\t\tlines.push(line);\n\t\t\tline = words[i];\n\t\t}\n\t}\n\tlines.push(line);\n\treturn lines;\n}\n\n/**\n * Build a label texture for a node's front face.\n *\n * @param text Label text.\n * @param color CSS colour for the text.\n * @param fontSize Requested font size in layout pixels.\n * @param footW Node footprint width (layout pixels).\n * @param footH Node footprint height (layout pixels).\n * @returns The texture + plane size, or `null` when no DOM / empty text.\n */\nexport function makeTextTexture(\n\ttext: string,\n\tcolor: string,\n\tfontSize: number,\n\tfootW: number,\n\tfootH: number,\n): SmartArtTextTexture | null {\n\tif (typeof document === 'undefined' || !text.trim() || footW <= 0 || footH <= 0) {\n\t\treturn null;\n\t}\n\n\tconst worldWidth = footW * FILL;\n\tconst worldHeight = footH * FILL;\n\tconst canvas = document.createElement('canvas');\n\tcanvas.width = Math.max(8, Math.round(worldWidth * SUPERSAMPLE));\n\tcanvas.height = Math.max(8, Math.round(worldHeight * SUPERSAMPLE));\n\tconst ctx = canvas.getContext('2d');\n\tif (!ctx) {\n\t\treturn null;\n\t}\n\n\tconst family = 'system-ui, -apple-system, Segoe UI, Roboto, sans-serif';\n\tconst maxTextWidth = canvas.width * 0.94;\n\n\t// Shrink the font until the wrapped block fits the canvas height.\n\tlet px = Math.max(6, fontSize) * SUPERSAMPLE;\n\tlet lines: string[] = [];\n\tfor (let attempt = 0; attempt < 12; attempt++) {\n\t\tctx.font = `600 ${px}px ${family}`;\n\t\tlines = wrapLines(ctx, text, maxTextWidth);\n\t\tconst lineHeight = px * 1.2;\n\t\tif (lines.length * lineHeight <= canvas.height * 0.96 || px <= 6 * SUPERSAMPLE) {\n\t\t\tbreak;\n\t\t}\n\t\tpx *= 0.88;\n\t}\n\n\tctx.clearRect(0, 0, canvas.width, canvas.height);\n\tctx.fillStyle = color;\n\tctx.textAlign = 'center';\n\tctx.textBaseline = 'middle';\n\tctx.font = `600 ${px}px ${family}`;\n\tconst lineHeight = px * 1.2;\n\tconst blockHeight = lines.length * lineHeight;\n\tconst startY = canvas.height / 2 - blockHeight / 2 + lineHeight / 2;\n\tfor (let i = 0; i < lines.length; i++) {\n\t\tctx.fillText(lines[i], canvas.width / 2, startY + i * lineHeight);\n\t}\n\n\tconst texture = new CanvasTexture(canvas);\n\ttexture.colorSpace = SRGBColorSpace;\n\ttexture.minFilter = LinearFilter;\n\ttexture.magFilter = LinearFilter;\n\t// Disable GPU-side flip: WebGL2 does not allow UNPACK_FLIP_Y_WEBGL for\n\t// texImage3D targets (depth buffers, LUTs, shadow maps). Leaving flipY=true\n\t// (the Three.js default) pollutes the global pixel-store state and causes\n\t// \"INVALID_OPERATION: texImage3D: FLIP_Y or PREMULTIPLY_ALPHA isn't allowed\"\n\t// errors. Compensate in UV space instead.\n\ttexture.flipY = false;\n\ttexture.premultiplyAlpha = false;\n\ttexture.wrapT = RepeatWrapping;\n\ttexture.repeat.set(1, -1);\n\ttexture.offset.set(0, 1);\n\ttexture.needsUpdate = true;\n\n\treturn { texture, worldWidth, worldHeight };\n}\n","/**\n * Three.js SmartArt renderer - mesh-group construction.\n *\n * Turns a pure {@link SmartArt3DModel} into a `THREE.Group` of extruded blocks\n * (with bevels, edge outlines, and front-face text planes) plus connector\n * lines. All allocated GPU resources are tracked so the caller can dispose them\n * deterministically.\n */\n\nimport {\n\tBufferGeometry,\n\tColor,\n\tEdgesGeometry,\n\tEuler,\n\tExtrudeGeometry,\n\tGroup,\n\tLine,\n\tLineBasicMaterial,\n\tLineSegments,\n\tMesh,\n\tMeshBasicMaterial,\n\tMeshStandardMaterial,\n\tPlaneGeometry,\n\tShape,\n\tVector3,\n} from 'three';\n\nimport type { SmartArt3DMesh, SmartArt3DModel } from '../render/smartart-3d-types';\nimport { makeTextTexture } from './text-texture';\n\n/** A disposable GPU resource (geometry, material, or texture). */\ninterface Disposable {\n\tdispose: () => void;\n}\n\n/** A built mesh group plus its teardown hook. */\nexport interface BuiltMeshGroup {\n\tgroup: Group;\n\tdispose: () => void;\n}\n\n/** Build the extruded geometry for one node. */\nfunction extrudeGeometry(m: SmartArt3DMesh): ExtrudeGeometry {\n\tconst shape = new Shape();\n\tm.outline.forEach((p, i) => {\n\t\tif (i === 0) {\n\t\t\tshape.moveTo(p.x, p.y);\n\t\t} else {\n\t\t\tshape.lineTo(p.x, p.y);\n\t\t}\n\t});\n\tshape.closePath();\n\n\tconst bevelEnabled = m.bevel > 0;\n\treturn new ExtrudeGeometry(shape, {\n\t\tdepth: m.depth,\n\t\tbevelEnabled,\n\t\tbevelThickness: m.bevel,\n\t\tbevelSize: m.bevel,\n\t\tbevelSegments: 2,\n\t\tcurveSegments: m.rounded ? 24 : 1,\n\t\tsteps: 1,\n\t});\n}\n\n/** Add the extruded block + edge outline for one node to the group. */\nfunction addBlock(group: Group, disposables: Disposable[], m: SmartArt3DMesh): ExtrudeGeometry {\n\tconst geo = extrudeGeometry(m);\n\tconst material = new MeshStandardMaterial({\n\t\tcolor: new Color(m.fill),\n\t\tmetalness: 0.12,\n\t\troughness: 0.52,\n\t\ttransparent: m.opacity < 1,\n\t\topacity: m.opacity,\n\t});\n\tconst mesh = new Mesh(geo, material);\n\tmesh.position.set(m.position.x, m.position.y, m.position.z);\n\tmesh.rotation.set(m.rotation.x, m.rotation.y, m.rotation.z);\n\tgroup.add(mesh);\n\tdisposables.push(geo, material);\n\n\tif (m.strokeWidth > 0) {\n\t\tconst edges = new EdgesGeometry(geo, 30);\n\t\tconst lineMaterial = new LineBasicMaterial({ color: new Color(m.stroke) });\n\t\tconst line = new LineSegments(edges, lineMaterial);\n\t\tline.position.copy(mesh.position);\n\t\tline.rotation.copy(mesh.rotation);\n\t\tgroup.add(line);\n\t\tdisposables.push(edges, lineMaterial);\n\t}\n\treturn geo;\n}\n\n/** Add a front-face text plane for one node, if it has a label. */\nfunction addLabel(group: Group, disposables: Disposable[], m: SmartArt3DMesh): void {\n\tif (!m.text) {\n\t\treturn;\n\t}\n\tconst tex = makeTextTexture(m.text, m.textColor, m.fontSize, m.halfWidth * 2, m.halfHeight * 2);\n\tif (!tex) {\n\t\treturn;\n\t}\n\tconst planeGeo = new PlaneGeometry(tex.worldWidth, tex.worldHeight);\n\tconst planeMaterial = new MeshBasicMaterial({\n\t\tmap: tex.texture,\n\t\ttransparent: true,\n\t\tdepthWrite: false,\n\t});\n\tconst plane = new Mesh(planeGeo, planeMaterial);\n\t// Float just past the front (+z) face, clearing any bevel, following the\n\t// mesh's rotation so the label sits flat on the (possibly rotated) face.\n\tconst euler = new Euler(m.rotation.x, m.rotation.y, m.rotation.z);\n\tconst offset = new Vector3(0, 0, m.depth + m.bevel + 0.4).applyEuler(euler);\n\tplane.position.set(m.position.x + offset.x, m.position.y + offset.y, m.position.z + offset.z);\n\tplane.rotation.copy(euler);\n\tgroup.add(plane);\n\tdisposables.push(planeGeo, planeMaterial, tex.texture);\n}\n\n/** Add a connector poly-line on the base plane. */\nfunction addConnectors(group: Group, disposables: Disposable[], model: SmartArt3DModel): void {\n\tfor (const c of model.connectors) {\n\t\tif (c.points.length < 2) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst geo = new BufferGeometry().setFromPoints(c.points.map((p) => new Vector3(p.x, p.y, p.z)));\n\t\tconst material = new LineBasicMaterial({\n\t\t\tcolor: new Color(c.color),\n\t\t\ttransparent: true,\n\t\t\topacity: 0.7,\n\t\t});\n\t\tgroup.add(new Line(geo, material));\n\t\tdisposables.push(geo, material);\n\t}\n}\n\n/**\n * Build a `THREE.Group` for a SmartArt 3D model. The group is centred on the\n * origin (the model positions already are); callers add it to the scene.\n */\nexport function buildMeshGroup(model: SmartArt3DModel): BuiltMeshGroup {\n\tconst group = new Group();\n\tconst disposables: Disposable[] = [];\n\n\tfor (const m of model.meshes) {\n\t\taddBlock(group, disposables, m);\n\t\taddLabel(group, disposables, m);\n\t}\n\taddConnectors(group, disposables, model);\n\n\treturn {\n\t\tgroup,\n\t\tdispose() {\n\t\t\tfor (const d of disposables) {\n\t\t\t\td.dispose();\n\t\t\t}\n\t\t},\n\t};\n}\n","/**\n * Three.js SmartArt renderer - vanilla scene runtime.\n *\n * Frames a {@link SmartArt3DModel} in a WebGL scene (lights, perspective\n * camera, optional OrbitControls, render loop) on a caller-provided canvas.\n * Pure vanilla three.js - no framework code - so the React, Vue, and Angular\n * bindings all mount it through a thin canvas wrapper. `three` is imported here\n * only; this module lives behind the `pptx-viewer-shared/smartart-3d` subpath so\n * it is lazily loaded and `three` stays an optional dependency.\n */\n\nimport {\n\tAmbientLight,\n\tColor,\n\tDirectionalLight,\n\tPerspectiveCamera,\n\tScene,\n\tWebGLRenderer,\n} from 'three';\nimport { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';\n\nimport type { SmartArt3DModel } from '../render/smartart-3d-types';\nimport { buildMeshGroup } from './meshes';\n\n/** Tunables for the mounted 3D view. */\nexport interface SmartArt3DViewOptions {\n\t/** Enable OrbitControls (rotate/zoom). Default `false`. */\n\tinteractive?: boolean;\n\t/** Slowly auto-rotate the model. Default `false`. */\n\tautoRotate?: boolean;\n\t/** Solid background colour `#rrggbb`; omit for transparent. */\n\tbackground?: string;\n\t/** Device pixel-ratio cap. Default `2`. */\n\tmaxPixelRatio?: number;\n}\n\n/** Imperative handle to a mounted SmartArt 3D view. */\nexport interface SmartArt3DHandle {\n\t/** Resize the renderer + camera to new pixel dimensions. */\n\tresize: (width: number, height: number) => void;\n\t/** Toggle interactive orbit controls at runtime. */\n\tsetInteractive: (on: boolean) => void;\n\t/** Tear down the renderer, controls, and all GPU resources. */\n\tdispose: () => void;\n}\n\nconst FOV = 42;\n\n/** A bounding sphere of the 3D content (centre + radius). */\ninterface ContentSphere {\n\tcx: number;\n\tcy: number;\n\tcz: number;\n\tradius: number;\n}\n\n/** Bounding sphere of all meshes (expanded by footprint/depth) + connectors. */\nfunction contentSphere(model: SmartArt3DModel): ContentSphere {\n\tlet minX = Infinity;\n\tlet minY = Infinity;\n\tlet minZ = Infinity;\n\tlet maxX = -Infinity;\n\tlet maxY = -Infinity;\n\tlet maxZ = -Infinity;\n\tconst expand = (x: number, y: number, z: number, r: number): void => {\n\t\tminX = Math.min(minX, x - r);\n\t\tminY = Math.min(minY, y - r);\n\t\tminZ = Math.min(minZ, z - r);\n\t\tmaxX = Math.max(maxX, x + r);\n\t\tmaxY = Math.max(maxY, y + r);\n\t\tmaxZ = Math.max(maxZ, z + r);\n\t};\n\tfor (const m of model.meshes) {\n\t\tconst r = Math.max(m.halfWidth, m.halfHeight) + m.depth + m.bevel;\n\t\texpand(m.position.x, m.position.y, m.position.z, r);\n\t}\n\tfor (const c of model.connectors) {\n\t\tfor (const p of c.points) {\n\t\t\texpand(p.x, p.y, p.z, 1);\n\t\t}\n\t}\n\tif (!Number.isFinite(minX)) {\n\t\tconst fallback = Math.max(model.bounds.width, model.bounds.height) / 2 || 1;\n\t\treturn { cx: 0, cy: 0, cz: 0, radius: fallback };\n\t}\n\treturn {\n\t\tcx: (minX + maxX) / 2,\n\t\tcy: (minY + maxY) / 2,\n\t\tcz: (minZ + maxZ) / 2,\n\t\tradius: 0.5 * Math.hypot(maxX - minX, maxY - minY, maxZ - minZ) || 1,\n\t};\n}\n\n/** Camera distance that frames a bounding sphere of `radius` at the given FOV. */\nfunction frameDistance(radius: number, aspect: number): number {\n\tconst vFov = (FOV * Math.PI) / 180;\n\tconst hFov = 2 * Math.atan(Math.tan(vFov / 2) * aspect);\n\tconst minFov = Math.min(vFov, hFov);\n\treturn (radius / Math.sin(minFov / 2)) * 1.1;\n}\n\n/**\n * Mount a SmartArt 3D model onto a canvas and start rendering.\n *\n * @returns a handle for resizing, toggling interactivity, and disposal.\n */\nexport function mountSmartArt3D(\n\tcanvas: HTMLCanvasElement,\n\tmodel: SmartArt3DModel,\n\twidth: number,\n\theight: number,\n\toptions: SmartArt3DViewOptions = {},\n): SmartArt3DHandle {\n\tconst renderer = new WebGLRenderer({ canvas, antialias: true, alpha: !options.background });\n\trenderer.setPixelRatio(\n\t\tMath.min(\n\t\t\ttypeof window === 'undefined' ? 1 : window.devicePixelRatio || 1,\n\t\t\toptions.maxPixelRatio ?? 2,\n\t\t),\n\t);\n\trenderer.setSize(width, height, false);\n\n\tconst scene = new Scene();\n\tif (options.background) {\n\t\tscene.background = new Color(options.background);\n\t}\n\n\tconst { cx, cy, cz, radius } = contentSphere(model);\n\tconst aspect = width / Math.max(1, height);\n\tconst dist = frameDistance(radius, aspect);\n\n\tconst camera = new PerspectiveCamera(FOV, aspect, 0.1, dist * 8 + radius * 4);\n\t// A slight elevation + offset gives the extrusion/spatial depth a readable\n\t// three-quarter presence, framing the content's own centroid.\n\tcamera.position.set(cx + radius * 0.25, cy + radius * 0.3, cz + dist);\n\tcamera.lookAt(cx, cy, cz);\n\n\tscene.add(new AmbientLight(0xffffff, 0.62));\n\tconst key = new DirectionalLight(0xffffff, 0.95);\n\tkey.position.set(cx + radius, cy + radius * 1.4, cz + dist);\n\tscene.add(key);\n\tconst fill = new DirectionalLight(0xffffff, 0.3);\n\tfill.position.set(cx - radius, cy - radius * 0.6, cz + dist * 0.6);\n\tscene.add(fill);\n\n\tconst built = buildMeshGroup(model);\n\tscene.add(built.group);\n\n\tlet controls: OrbitControls | null = null;\n\tconst enableControls = (on: boolean): void => {\n\t\tif (on && !controls) {\n\t\t\tcontrols = new OrbitControls(camera, canvas);\n\t\t\tcontrols.enablePan = false;\n\t\t\tcontrols.target.set(cx, cy, cz);\n\t\t\tcontrols.minDistance = dist * 0.4;\n\t\t\tcontrols.maxDistance = dist * 3;\n\t\t\tcontrols.update();\n\t\t} else if (!on && controls) {\n\t\t\tcontrols.dispose();\n\t\t\tcontrols = null;\n\t\t}\n\t\tif (controls) {\n\t\t\tcontrols.autoRotate = Boolean(options.autoRotate);\n\t\t\tcontrols.autoRotateSpeed = 1.2;\n\t\t}\n\t};\n\tenableControls(Boolean(options.interactive));\n\n\tlet frame = 0;\n\tlet disposed = false;\n\tconst renderLoop = (): void => {\n\t\tif (disposed) {\n\t\t\treturn;\n\t\t}\n\t\tframe = requestAnimationFrame(renderLoop);\n\t\tcontrols?.update();\n\t\trenderer.render(scene, camera);\n\t};\n\tframe = requestAnimationFrame(renderLoop);\n\n\treturn {\n\t\tresize(w: number, h: number) {\n\t\t\tcamera.aspect = w / Math.max(1, h);\n\t\t\tcamera.updateProjectionMatrix();\n\t\t\trenderer.setSize(w, h, false);\n\t\t},\n\t\tsetInteractive(on: boolean) {\n\t\t\tenableControls(on);\n\t\t},\n\t\tdispose() {\n\t\t\tdisposed = true;\n\t\t\tcancelAnimationFrame(frame);\n\t\t\tcontrols?.dispose();\n\t\t\tbuilt.dispose();\n\t\t\trenderer.dispose();\n\t\t},\n\t};\n}\n","/**\n * `pptx-viewer-shared/smartart-3d` - vanilla three.js SmartArt scene runtime.\n *\n * Lazily imported by each binding's SmartArt 3D wrapper so `three` stays an\n * optional dependency: when it is not installed the dynamic import rejects and\n * the binding falls back to the SVG `SmartArtRenderer`. The pure model builder\n * (`buildSmartArt3DModel`) and its types live in the main barrel\n * (`pptx-viewer-shared`) and should be imported from there directly.\n */\n\nexport { mountSmartArt3D } from './scene';\nexport type { SmartArt3DHandle, SmartArt3DViewOptions } from './scene';\nexport type {\n\tSmartArt3DModel,\n\tSmartArt3DModelOptions,\n\tSmartArt3DMesh,\n\tSmartArt3DConnector,\n} from '../render/smartart-3d-types';\n"],"names":[],"mappings":"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"}
@@ -50433,7 +50433,7 @@ class SmartArt3DRendererComponent {
50433
50433
  return; // No geometry: stay on the SVG fallback.
50434
50434
  }
50435
50435
  try {
50436
- const mod = await import('./pptx-angular-viewer-index-BfKeZbQy.mjs');
50436
+ const mod = await import('./pptx-angular-viewer-index-BbiIOY_Y.mjs');
50437
50437
  this.mountFn.set(mod.mountSmartArt3D);
50438
50438
  this.useFallback.set(false);
50439
50439
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pptx-angular-viewer",
3
- "version": "1.1.48",
3
+ "version": "1.1.50",
4
4
  "description": "Angular PowerPoint viewer and editor component: render, edit, and export PPTX slides in the browser.",
5
5
  "keywords": [
6
6
  "angular",
@@ -45,7 +45,7 @@
45
45
  "html2canvas-pro": "^2.0.4",
46
46
  "jspdf": "^4.2.1",
47
47
  "jszip": "^3.10.1",
48
- "pptx-viewer-core": "^1.1.38",
48
+ "pptx-viewer-core": "^1.1.39",
49
49
  "tslib": "^2.8.1"
50
50
  },
51
51
  "peerDependencies": {
@@ -1 +0,0 @@
1
- {"version":3,"file":"pptx-angular-viewer-index-BfKeZbQy.mjs","sources":["../../src/internal/shared-src/smartart-3d/text-texture.ts","../../src/internal/shared-src/smartart-3d/meshes.ts","../../src/internal/shared-src/smartart-3d/scene.ts","../../src/internal/shared-src/smartart-3d/index.ts"],"sourcesContent":["/**\n * Three.js SmartArt renderer - front-face text textures.\n *\n * Renders a node label onto an offscreen 2D canvas and wraps it as a\n * `THREE.CanvasTexture`, sized to sit on the extruded block's front face. Text\n * is word-wrapped and auto-shrunk to fit the node footprint. Returns `null` in\n * non-DOM environments (SSR / unit tests).\n */\n\nimport { CanvasTexture, LinearFilter, SRGBColorSpace } from 'three';\n\n/** A built label texture plus the world-space plane size it should fill. */\nexport interface SmartArtTextTexture {\n\ttexture: CanvasTexture;\n\t/** Plane width in world (layout-pixel) units. */\n\tworldWidth: number;\n\t/** Plane height in world units. */\n\tworldHeight: number;\n}\n\n/** Supersampling factor for crisp text at oblique camera angles. */\nconst SUPERSAMPLE = 4;\n/** Fraction of the footprint the text plane occupies (inset padding). */\nconst FILL = 0.86;\n\n/** Greedily word-wrap `text` to lines that fit `maxWidth` at the given font. */\nfunction wrapLines(ctx: CanvasRenderingContext2D, text: string, maxWidth: number): string[] {\n\tconst words = text.split(/\\s+/u).filter(Boolean);\n\tif (words.length === 0) {\n\t\treturn [];\n\t}\n\tconst lines: string[] = [];\n\tlet line = words[0];\n\tfor (let i = 1; i < words.length; i++) {\n\t\tconst candidate = `${line} ${words[i]}`;\n\t\tif (ctx.measureText(candidate).width <= maxWidth) {\n\t\t\tline = candidate;\n\t\t} else {\n\t\t\tlines.push(line);\n\t\t\tline = words[i];\n\t\t}\n\t}\n\tlines.push(line);\n\treturn lines;\n}\n\n/**\n * Build a label texture for a node's front face.\n *\n * @param text Label text.\n * @param color CSS colour for the text.\n * @param fontSize Requested font size in layout pixels.\n * @param footW Node footprint width (layout pixels).\n * @param footH Node footprint height (layout pixels).\n * @returns The texture + plane size, or `null` when no DOM / empty text.\n */\nexport function makeTextTexture(\n\ttext: string,\n\tcolor: string,\n\tfontSize: number,\n\tfootW: number,\n\tfootH: number,\n): SmartArtTextTexture | null {\n\tif (typeof document === 'undefined' || !text.trim() || footW <= 0 || footH <= 0) {\n\t\treturn null;\n\t}\n\n\tconst worldWidth = footW * FILL;\n\tconst worldHeight = footH * FILL;\n\tconst canvas = document.createElement('canvas');\n\tcanvas.width = Math.max(8, Math.round(worldWidth * SUPERSAMPLE));\n\tcanvas.height = Math.max(8, Math.round(worldHeight * SUPERSAMPLE));\n\tconst ctx = canvas.getContext('2d');\n\tif (!ctx) {\n\t\treturn null;\n\t}\n\n\tconst family = 'system-ui, -apple-system, Segoe UI, Roboto, sans-serif';\n\tconst maxTextWidth = canvas.width * 0.94;\n\n\t// Shrink the font until the wrapped block fits the canvas height.\n\tlet px = Math.max(6, fontSize) * SUPERSAMPLE;\n\tlet lines: string[] = [];\n\tfor (let attempt = 0; attempt < 12; attempt++) {\n\t\tctx.font = `600 ${px}px ${family}`;\n\t\tlines = wrapLines(ctx, text, maxTextWidth);\n\t\tconst lineHeight = px * 1.2;\n\t\tif (lines.length * lineHeight <= canvas.height * 0.96 || px <= 6 * SUPERSAMPLE) {\n\t\t\tbreak;\n\t\t}\n\t\tpx *= 0.88;\n\t}\n\n\tctx.clearRect(0, 0, canvas.width, canvas.height);\n\tctx.fillStyle = color;\n\tctx.textAlign = 'center';\n\tctx.textBaseline = 'middle';\n\tctx.font = `600 ${px}px ${family}`;\n\tconst lineHeight = px * 1.2;\n\tconst blockHeight = lines.length * lineHeight;\n\tconst startY = canvas.height / 2 - blockHeight / 2 + lineHeight / 2;\n\tfor (let i = 0; i < lines.length; i++) {\n\t\tctx.fillText(lines[i], canvas.width / 2, startY + i * lineHeight);\n\t}\n\n\tconst texture = new CanvasTexture(canvas);\n\ttexture.colorSpace = SRGBColorSpace;\n\ttexture.minFilter = LinearFilter;\n\ttexture.magFilter = LinearFilter;\n\ttexture.needsUpdate = true;\n\n\treturn { texture, worldWidth, worldHeight };\n}\n","/**\n * Three.js SmartArt renderer - mesh-group construction.\n *\n * Turns a pure {@link SmartArt3DModel} into a `THREE.Group` of extruded blocks\n * (with bevels, edge outlines, and front-face text planes) plus connector\n * lines. All allocated GPU resources are tracked so the caller can dispose them\n * deterministically.\n */\n\nimport {\n\tBufferGeometry,\n\tColor,\n\tEdgesGeometry,\n\tEuler,\n\tExtrudeGeometry,\n\tGroup,\n\tLine,\n\tLineBasicMaterial,\n\tLineSegments,\n\tMesh,\n\tMeshBasicMaterial,\n\tMeshStandardMaterial,\n\tPlaneGeometry,\n\tShape,\n\tVector3,\n} from 'three';\n\nimport type { SmartArt3DMesh, SmartArt3DModel } from '../render/smartart-3d-types';\nimport { makeTextTexture } from './text-texture';\n\n/** A disposable GPU resource (geometry, material, or texture). */\ninterface Disposable {\n\tdispose: () => void;\n}\n\n/** A built mesh group plus its teardown hook. */\nexport interface BuiltMeshGroup {\n\tgroup: Group;\n\tdispose: () => void;\n}\n\n/** Build the extruded geometry for one node. */\nfunction extrudeGeometry(m: SmartArt3DMesh): ExtrudeGeometry {\n\tconst shape = new Shape();\n\tm.outline.forEach((p, i) => {\n\t\tif (i === 0) {\n\t\t\tshape.moveTo(p.x, p.y);\n\t\t} else {\n\t\t\tshape.lineTo(p.x, p.y);\n\t\t}\n\t});\n\tshape.closePath();\n\n\tconst bevelEnabled = m.bevel > 0;\n\treturn new ExtrudeGeometry(shape, {\n\t\tdepth: m.depth,\n\t\tbevelEnabled,\n\t\tbevelThickness: m.bevel,\n\t\tbevelSize: m.bevel,\n\t\tbevelSegments: 2,\n\t\tcurveSegments: m.rounded ? 24 : 1,\n\t\tsteps: 1,\n\t});\n}\n\n/** Add the extruded block + edge outline for one node to the group. */\nfunction addBlock(group: Group, disposables: Disposable[], m: SmartArt3DMesh): ExtrudeGeometry {\n\tconst geo = extrudeGeometry(m);\n\tconst material = new MeshStandardMaterial({\n\t\tcolor: new Color(m.fill),\n\t\tmetalness: 0.12,\n\t\troughness: 0.52,\n\t\ttransparent: m.opacity < 1,\n\t\topacity: m.opacity,\n\t});\n\tconst mesh = new Mesh(geo, material);\n\tmesh.position.set(m.position.x, m.position.y, m.position.z);\n\tmesh.rotation.set(m.rotation.x, m.rotation.y, m.rotation.z);\n\tgroup.add(mesh);\n\tdisposables.push(geo, material);\n\n\tif (m.strokeWidth > 0) {\n\t\tconst edges = new EdgesGeometry(geo, 30);\n\t\tconst lineMaterial = new LineBasicMaterial({ color: new Color(m.stroke) });\n\t\tconst line = new LineSegments(edges, lineMaterial);\n\t\tline.position.copy(mesh.position);\n\t\tline.rotation.copy(mesh.rotation);\n\t\tgroup.add(line);\n\t\tdisposables.push(edges, lineMaterial);\n\t}\n\treturn geo;\n}\n\n/** Add a front-face text plane for one node, if it has a label. */\nfunction addLabel(group: Group, disposables: Disposable[], m: SmartArt3DMesh): void {\n\tif (!m.text) {\n\t\treturn;\n\t}\n\tconst tex = makeTextTexture(m.text, m.textColor, m.fontSize, m.halfWidth * 2, m.halfHeight * 2);\n\tif (!tex) {\n\t\treturn;\n\t}\n\tconst planeGeo = new PlaneGeometry(tex.worldWidth, tex.worldHeight);\n\tconst planeMaterial = new MeshBasicMaterial({\n\t\tmap: tex.texture,\n\t\ttransparent: true,\n\t\tdepthWrite: false,\n\t});\n\tconst plane = new Mesh(planeGeo, planeMaterial);\n\t// Float just past the front (+z) face, clearing any bevel, following the\n\t// mesh's rotation so the label sits flat on the (possibly rotated) face.\n\tconst euler = new Euler(m.rotation.x, m.rotation.y, m.rotation.z);\n\tconst offset = new Vector3(0, 0, m.depth + m.bevel + 0.4).applyEuler(euler);\n\tplane.position.set(m.position.x + offset.x, m.position.y + offset.y, m.position.z + offset.z);\n\tplane.rotation.copy(euler);\n\tgroup.add(plane);\n\tdisposables.push(planeGeo, planeMaterial, tex.texture);\n}\n\n/** Add a connector poly-line on the base plane. */\nfunction addConnectors(group: Group, disposables: Disposable[], model: SmartArt3DModel): void {\n\tfor (const c of model.connectors) {\n\t\tif (c.points.length < 2) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst geo = new BufferGeometry().setFromPoints(c.points.map((p) => new Vector3(p.x, p.y, p.z)));\n\t\tconst material = new LineBasicMaterial({\n\t\t\tcolor: new Color(c.color),\n\t\t\ttransparent: true,\n\t\t\topacity: 0.7,\n\t\t});\n\t\tgroup.add(new Line(geo, material));\n\t\tdisposables.push(geo, material);\n\t}\n}\n\n/**\n * Build a `THREE.Group` for a SmartArt 3D model. The group is centred on the\n * origin (the model positions already are); callers add it to the scene.\n */\nexport function buildMeshGroup(model: SmartArt3DModel): BuiltMeshGroup {\n\tconst group = new Group();\n\tconst disposables: Disposable[] = [];\n\n\tfor (const m of model.meshes) {\n\t\taddBlock(group, disposables, m);\n\t\taddLabel(group, disposables, m);\n\t}\n\taddConnectors(group, disposables, model);\n\n\treturn {\n\t\tgroup,\n\t\tdispose() {\n\t\t\tfor (const d of disposables) {\n\t\t\t\td.dispose();\n\t\t\t}\n\t\t},\n\t};\n}\n","/**\n * Three.js SmartArt renderer - vanilla scene runtime.\n *\n * Frames a {@link SmartArt3DModel} in a WebGL scene (lights, perspective\n * camera, optional OrbitControls, render loop) on a caller-provided canvas.\n * Pure vanilla three.js - no framework code - so the React, Vue, and Angular\n * bindings all mount it through a thin canvas wrapper. `three` is imported here\n * only; this module lives behind the `pptx-viewer-shared/smartart-3d` subpath so\n * it is lazily loaded and `three` stays an optional dependency.\n */\n\nimport {\n\tAmbientLight,\n\tColor,\n\tDirectionalLight,\n\tPerspectiveCamera,\n\tScene,\n\tWebGLRenderer,\n} from 'three';\nimport { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';\n\nimport type { SmartArt3DModel } from '../render/smartart-3d-types';\nimport { buildMeshGroup } from './meshes';\n\n/** Tunables for the mounted 3D view. */\nexport interface SmartArt3DViewOptions {\n\t/** Enable OrbitControls (rotate/zoom). Default `false`. */\n\tinteractive?: boolean;\n\t/** Slowly auto-rotate the model. Default `false`. */\n\tautoRotate?: boolean;\n\t/** Solid background colour `#rrggbb`; omit for transparent. */\n\tbackground?: string;\n\t/** Device pixel-ratio cap. Default `2`. */\n\tmaxPixelRatio?: number;\n}\n\n/** Imperative handle to a mounted SmartArt 3D view. */\nexport interface SmartArt3DHandle {\n\t/** Resize the renderer + camera to new pixel dimensions. */\n\tresize: (width: number, height: number) => void;\n\t/** Toggle interactive orbit controls at runtime. */\n\tsetInteractive: (on: boolean) => void;\n\t/** Tear down the renderer, controls, and all GPU resources. */\n\tdispose: () => void;\n}\n\nconst FOV = 42;\n\n/** A bounding sphere of the 3D content (centre + radius). */\ninterface ContentSphere {\n\tcx: number;\n\tcy: number;\n\tcz: number;\n\tradius: number;\n}\n\n/** Bounding sphere of all meshes (expanded by footprint/depth) + connectors. */\nfunction contentSphere(model: SmartArt3DModel): ContentSphere {\n\tlet minX = Infinity;\n\tlet minY = Infinity;\n\tlet minZ = Infinity;\n\tlet maxX = -Infinity;\n\tlet maxY = -Infinity;\n\tlet maxZ = -Infinity;\n\tconst expand = (x: number, y: number, z: number, r: number): void => {\n\t\tminX = Math.min(minX, x - r);\n\t\tminY = Math.min(minY, y - r);\n\t\tminZ = Math.min(minZ, z - r);\n\t\tmaxX = Math.max(maxX, x + r);\n\t\tmaxY = Math.max(maxY, y + r);\n\t\tmaxZ = Math.max(maxZ, z + r);\n\t};\n\tfor (const m of model.meshes) {\n\t\tconst r = Math.max(m.halfWidth, m.halfHeight) + m.depth + m.bevel;\n\t\texpand(m.position.x, m.position.y, m.position.z, r);\n\t}\n\tfor (const c of model.connectors) {\n\t\tfor (const p of c.points) {\n\t\t\texpand(p.x, p.y, p.z, 1);\n\t\t}\n\t}\n\tif (!Number.isFinite(minX)) {\n\t\tconst fallback = Math.max(model.bounds.width, model.bounds.height) / 2 || 1;\n\t\treturn { cx: 0, cy: 0, cz: 0, radius: fallback };\n\t}\n\treturn {\n\t\tcx: (minX + maxX) / 2,\n\t\tcy: (minY + maxY) / 2,\n\t\tcz: (minZ + maxZ) / 2,\n\t\tradius: 0.5 * Math.hypot(maxX - minX, maxY - minY, maxZ - minZ) || 1,\n\t};\n}\n\n/** Camera distance that frames a bounding sphere of `radius` at the given FOV. */\nfunction frameDistance(radius: number, aspect: number): number {\n\tconst vFov = (FOV * Math.PI) / 180;\n\tconst hFov = 2 * Math.atan(Math.tan(vFov / 2) * aspect);\n\tconst minFov = Math.min(vFov, hFov);\n\treturn (radius / Math.sin(minFov / 2)) * 1.1;\n}\n\n/**\n * Mount a SmartArt 3D model onto a canvas and start rendering.\n *\n * @returns a handle for resizing, toggling interactivity, and disposal.\n */\nexport function mountSmartArt3D(\n\tcanvas: HTMLCanvasElement,\n\tmodel: SmartArt3DModel,\n\twidth: number,\n\theight: number,\n\toptions: SmartArt3DViewOptions = {},\n): SmartArt3DHandle {\n\tconst renderer = new WebGLRenderer({ canvas, antialias: true, alpha: !options.background });\n\trenderer.setPixelRatio(\n\t\tMath.min(\n\t\t\ttypeof window === 'undefined' ? 1 : window.devicePixelRatio || 1,\n\t\t\toptions.maxPixelRatio ?? 2,\n\t\t),\n\t);\n\trenderer.setSize(width, height, false);\n\n\tconst scene = new Scene();\n\tif (options.background) {\n\t\tscene.background = new Color(options.background);\n\t}\n\n\tconst { cx, cy, cz, radius } = contentSphere(model);\n\tconst aspect = width / Math.max(1, height);\n\tconst dist = frameDistance(radius, aspect);\n\n\tconst camera = new PerspectiveCamera(FOV, aspect, 0.1, dist * 8 + radius * 4);\n\t// A slight elevation + offset gives the extrusion/spatial depth a readable\n\t// three-quarter presence, framing the content's own centroid.\n\tcamera.position.set(cx + radius * 0.25, cy + radius * 0.3, cz + dist);\n\tcamera.lookAt(cx, cy, cz);\n\n\tscene.add(new AmbientLight(0xffffff, 0.62));\n\tconst key = new DirectionalLight(0xffffff, 0.95);\n\tkey.position.set(cx + radius, cy + radius * 1.4, cz + dist);\n\tscene.add(key);\n\tconst fill = new DirectionalLight(0xffffff, 0.3);\n\tfill.position.set(cx - radius, cy - radius * 0.6, cz + dist * 0.6);\n\tscene.add(fill);\n\n\tconst built = buildMeshGroup(model);\n\tscene.add(built.group);\n\n\tlet controls: OrbitControls | null = null;\n\tconst enableControls = (on: boolean): void => {\n\t\tif (on && !controls) {\n\t\t\tcontrols = new OrbitControls(camera, canvas);\n\t\t\tcontrols.enablePan = false;\n\t\t\tcontrols.target.set(cx, cy, cz);\n\t\t\tcontrols.minDistance = dist * 0.4;\n\t\t\tcontrols.maxDistance = dist * 3;\n\t\t\tcontrols.update();\n\t\t} else if (!on && controls) {\n\t\t\tcontrols.dispose();\n\t\t\tcontrols = null;\n\t\t}\n\t\tif (controls) {\n\t\t\tcontrols.autoRotate = Boolean(options.autoRotate);\n\t\t\tcontrols.autoRotateSpeed = 1.2;\n\t\t}\n\t};\n\tenableControls(Boolean(options.interactive));\n\n\tlet frame = 0;\n\tlet disposed = false;\n\tconst renderLoop = (): void => {\n\t\tif (disposed) {\n\t\t\treturn;\n\t\t}\n\t\tframe = requestAnimationFrame(renderLoop);\n\t\tcontrols?.update();\n\t\trenderer.render(scene, camera);\n\t};\n\tframe = requestAnimationFrame(renderLoop);\n\n\treturn {\n\t\tresize(w: number, h: number) {\n\t\t\tcamera.aspect = w / Math.max(1, h);\n\t\t\tcamera.updateProjectionMatrix();\n\t\t\trenderer.setSize(w, h, false);\n\t\t},\n\t\tsetInteractive(on: boolean) {\n\t\t\tenableControls(on);\n\t\t},\n\t\tdispose() {\n\t\t\tdisposed = true;\n\t\t\tcancelAnimationFrame(frame);\n\t\t\tcontrols?.dispose();\n\t\t\tbuilt.dispose();\n\t\t\trenderer.dispose();\n\t\t},\n\t};\n}\n","/**\n * `pptx-viewer-shared/smartart-3d` - vanilla three.js SmartArt scene runtime.\n *\n * Lazily imported by each binding's SmartArt 3D wrapper so `three` stays an\n * optional dependency: when it is not installed the dynamic import rejects and\n * the binding falls back to the SVG `SmartArtRenderer`. The pure model builder\n * (`buildSmartArt3DModel`) and its types live in the main barrel\n * (`pptx-viewer-shared`) and should be imported from there directly.\n */\n\nexport { mountSmartArt3D } from './scene';\nexport type { SmartArt3DHandle, SmartArt3DViewOptions } from './scene';\nexport type {\n\tSmartArt3DModel,\n\tSmartArt3DModelOptions,\n\tSmartArt3DMesh,\n\tSmartArt3DConnector,\n} from '../render/smartart-3d-types';\n"],"names":[],"mappings":"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"}