Z ZPI 文档 v0.3.8
介绍页

源码

packages/desktop/src/renderer/presentation/controls.ts

typescript36 行查看原文
// Adapted from ZCode (Apache-2.0); imports and host integration changed for ZPI.
export const PPTX_MIN_ZOOM_PERCENT = 25;
export const PPTX_MAX_ZOOM_PERCENT = 300;

export function clampPresentationPageNumber(target: number, pageCount: number): number {
  const safePageCount = Math.max(1, Math.floor(pageCount));
  if (!Number.isFinite(target)) {
    return 1;
  }
  return Math.min(Math.max(1, Math.round(target)), safePageCount);
}

export function clampPresentationZoomPercent(target: number): number {
  if (!Number.isFinite(target)) {
    return 100;
  }
  return Math.min(Math.max(PPTX_MIN_ZOOM_PERCENT, Math.round(target)), PPTX_MAX_ZOOM_PERCENT);
}

/** Only http(s) links may leave a slide; reject control-character protocol tricks. */
export function safePresentationUrl(value: string): string | null {
  if (
    [...value].some((char) => {
      const code = char.charCodeAt(0);
      return code <= 32 || (code >= 127 && code <= 159);
    })
  )
    return null;
  try {
    const url = new URL(value);
    return url.protocol === "https:" || url.protocol === "http:" ? value : null;
  } catch {
    return null;
  }
}