mesurer 0.1.5 → 0.2.1

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/dist/index.d.cts CHANGED
@@ -111,12 +111,24 @@ type DistanceOverlay = {
111
111
  y: number;
112
112
  value: number;
113
113
  } | null;
114
+ extraHorizontals?: Array<{
115
+ x1: number;
116
+ x2: number;
117
+ y: number;
118
+ value: number;
119
+ }>;
114
120
  vertical: {
115
121
  y1: number;
116
122
  y2: number;
117
123
  x: number;
118
124
  value: number;
119
125
  } | null;
126
+ extraVerticals?: Array<{
127
+ y1: number;
128
+ y2: number;
129
+ x: number;
130
+ value: number;
131
+ }>;
120
132
  connectors: Array<{
121
133
  x1: number;
122
134
  y1: number;
@@ -133,9 +145,25 @@ type TextStyleSettings = {
133
145
  color: string;
134
146
  };
135
147
 
148
+ type LayoutGuideKind = "columns" | "rows" | "grid";
149
+ type LayoutGuideAlign = "stretch" | "min" | "center" | "max";
150
+ type LayoutGuide = {
151
+ id: string;
152
+ kind: LayoutGuideKind;
153
+ visible: boolean;
154
+ color: string;
155
+ opacity: number;
156
+ count: number;
157
+ size: number;
158
+ gutter: number;
159
+ offset: number;
160
+ align: LayoutGuideAlign;
161
+ };
162
+
136
163
  declare const MESURER_STORAGE_VERSION = 2;
137
164
  type GuidePattern = "solid" | "dashed" | "dotted";
138
165
  type InfoCardMode = "hover" | "click";
166
+ type ThemeMode = "system" | "light" | "dark";
139
167
  type GuideStyle = {
140
168
  opacity: number;
141
169
  width: number;
@@ -147,12 +175,18 @@ type RulerSettings = {
147
175
  opacity: number;
148
176
  edgeReveal: boolean;
149
177
  };
178
+ type ShareMode = "screenshot" | "record";
150
179
  type ScreenshotSettings = {
151
180
  copy: boolean;
152
181
  download: boolean;
182
+ shareMode: ShareMode;
153
183
  };
154
184
  type MesurerStoredSettings = {
155
185
  lastToolMode?: PersistentToolMode;
186
+ toolbarPosition?: {
187
+ x: number;
188
+ y: number;
189
+ };
156
190
  highlightColor?: string;
157
191
  guideColor?: string;
158
192
  arrowColor?: string;
@@ -170,17 +204,21 @@ type MesurerStoredSettings = {
170
204
  infoCardMode?: InfoCardMode;
171
205
  persistOnReload?: boolean;
172
206
  shortcutsEnabled?: boolean;
207
+ theme?: ThemeMode;
173
208
  guideStyle?: Partial<GuideStyle>;
174
209
  rulerSettings?: Partial<RulerSettings>;
175
210
  screenshotSettings?: Partial<ScreenshotSettings>;
176
211
  textStyle?: Partial<TextStyleSettings>;
177
212
  };
178
- type MesurerStoredWorkspace = {
213
+ type MesurerSessionChrome = {
179
214
  enabled: boolean;
215
+ minimized?: boolean;
180
216
  xrayVisible: boolean;
181
217
  toolMode: ToolMode;
182
218
  rulersVisible: boolean;
183
219
  guideOrientation: "vertical" | "horizontal";
220
+ };
221
+ type MesurerPageArtifacts = {
184
222
  guides: Guide[];
185
223
  selectedGuideIds: string[];
186
224
  arrows: Arrow[];
@@ -193,10 +231,16 @@ type MesurerStoredWorkspace = {
193
231
  activeMeasurement: Measurement | null;
194
232
  heldDistances: DistanceOverlay[];
195
233
  comments?: CommentThread[];
234
+ layoutGuides?: LayoutGuide[];
196
235
  };
236
+ type MesurerStoredWorkspace = MesurerSessionChrome & MesurerPageArtifacts;
237
+ type PagedWorkspaceStore = MesurerSessionChrome & {
238
+ pages: Record<string, MesurerPageArtifacts | null>;
239
+ };
240
+ declare const isPagedWorkspaceStore: (value: unknown) => value is PagedWorkspaceStore;
197
241
  type MesurerPersistenceSnapshot = {
198
242
  settings: MesurerStoredSettings;
199
- workspace: MesurerStoredWorkspace | null;
243
+ workspace: MesurerStoredWorkspace | PagedWorkspaceStore | null;
200
244
  };
201
245
  type PersistenceChangeSource = {
202
246
  settings?: boolean;
@@ -205,7 +249,7 @@ type PersistenceChangeSource = {
205
249
  type MesurerPersistence = {
206
250
  load: () => MesurerPersistenceSnapshot | null;
207
251
  saveSettings: (settings: MesurerStoredSettings) => void;
208
- saveWorkspace: (workspace: MesurerStoredWorkspace) => void;
252
+ saveWorkspace: (workspace: MesurerStoredWorkspace | PagedWorkspaceStore) => void;
209
253
  clearWorkspace: () => void;
210
254
  clearSettings: () => void;
211
255
  subscribe?: (listener: (snapshot: MesurerPersistenceSnapshot | null, source?: PersistenceChangeSource) => void) => () => void;
@@ -214,6 +258,7 @@ type MesurerPersistence = {
214
258
  declare const normalizeStoredSettings: (value: unknown) => MesurerStoredSettings;
215
259
  declare const normalizeStoredWorkspace: (value: unknown) => MesurerStoredWorkspace | null;
216
260
  declare const createLocalStoragePersistence: (ownerWindow: Window, workspaceKey: string, settingsKey?: string, legacyKey?: string) => MesurerPersistence;
261
+ declare const createPageScopedPersistence: (base: MesurerPersistence, getPageKey: () => string) => MesurerPersistence;
217
262
 
218
263
  type MesurerFeatures = {
219
264
  screenshot?: boolean;
@@ -221,6 +266,28 @@ type MesurerFeatures = {
221
266
  settings?: boolean;
222
267
  };
223
268
 
269
+ type ExtensionRecordingSession = {
270
+ prepare: () => Promise<void>;
271
+ start: (input: {
272
+ rect: {
273
+ left: number;
274
+ top: number;
275
+ width: number;
276
+ height: number;
277
+ };
278
+ viewport: {
279
+ width: number;
280
+ height: number;
281
+ };
282
+ }) => Promise<void>;
283
+ stop: () => Promise<{
284
+ id: string;
285
+ duration: number;
286
+ }>;
287
+ abort: () => void;
288
+ dispose?: () => void;
289
+ };
290
+
224
291
  type MesurerProps = {
225
292
  highlightColor?: string;
226
293
  guideColor?: string;
@@ -229,7 +296,9 @@ type MesurerProps = {
229
296
  hoverHighlightEnabled?: boolean;
230
297
  layoutDetailsEnabled?: boolean;
231
298
  persistOnReload?: boolean;
299
+ persistSession?: boolean;
232
300
  shortcutsEnabled?: boolean;
301
+ theme?: ThemeMode;
233
302
  portalTarget?: HTMLElement | ShadowRoot;
234
303
  persistKey?: string;
235
304
  colorPickerFormats?: ColorPickerFormat[];
@@ -246,6 +315,8 @@ type MesurerProps = {
246
315
  persistence?: MesurerPersistence;
247
316
  onPersistenceError?: (error: unknown) => void;
248
317
  captureVisibleTab?: () => Promise<Blob>;
318
+ extensionRecording?: ExtensionRecordingSession;
319
+ extensionRecordingPlayer?: string;
249
320
  features?: MesurerFeatures;
250
321
  initialState?: {
251
322
  enabled?: boolean;
@@ -270,10 +341,11 @@ type MesurerProps = {
270
341
  activeMeasurement?: MesurerStoredWorkspace["activeMeasurement"];
271
342
  heldDistances?: MesurerStoredWorkspace["heldDistances"];
272
343
  comments?: CommentThread[];
344
+ layoutGuides?: MesurerStoredWorkspace["layoutGuides"];
273
345
  };
274
346
  };
275
347
 
276
- declare function Mesurer({ highlightColor, guideColor, arrowColor, guideHighlightEnabled, hoverHighlightEnabled, layoutDetailsEnabled, persistOnReload, shortcutsEnabled, portalTarget, persistKey, colorPickerFormats, colorPickerClickFormat, snapEnabled, snapGuidesEnabled, snapArrowsEnabled, arrowClickToPlace, selectNewGuideEnabled, multiMeasureEnabled, guideStyle, rulerSettings, textStyle, persistence, onPersistenceError, captureVisibleTab, features, initialState, }: MesurerProps): react_jsx_runtime.JSX.Element | null;
348
+ declare function Mesurer({ highlightColor, guideColor, arrowColor, guideHighlightEnabled, hoverHighlightEnabled, layoutDetailsEnabled, persistOnReload, persistSession, shortcutsEnabled, theme, portalTarget, persistKey, colorPickerFormats, colorPickerClickFormat, snapEnabled, snapGuidesEnabled, snapArrowsEnabled, arrowClickToPlace, selectNewGuideEnabled, multiMeasureEnabled, guideStyle, rulerSettings, textStyle, persistence, onPersistenceError, captureVisibleTab, extensionRecording, extensionRecordingPlayer, features, initialState, }: MesurerProps): react_jsx_runtime.JSX.Element | null;
277
349
 
278
350
  type TypographyRow = {
279
351
  label: string;
@@ -312,4 +384,4 @@ type TextInspectorOptions = {
312
384
  declare const createTextInspector: (options?: TextInspectorOptions, legacy?: boolean) => TextInspectorAPI;
313
385
  declare const TextInspector: TextInspectorAPI;
314
386
 
315
- export { type Arrow, type ColorPickerFormat, type ColorSample, type GuidePattern, type GuideStyle, MESURER_STORAGE_VERSION, Mesurer, type MesurerFeatures, type MesurerPersistence, type MesurerPersistenceSnapshot, type MesurerProps, type MesurerStoredSettings, type MesurerStoredWorkspace, type PenStroke, type Point, type RulerSettings, type ScreenshotSettings, type TextAnnotation, type TextFont, TextInspector, type TextInspectorAPI, type TextInspectorOptions, type TextStyleSettings, type TypographyInfo, type TypographyRow, createLocalStoragePersistence, createTextInspector, normalizeStoredSettings, normalizeStoredWorkspace };
387
+ export { type Arrow, type ColorPickerFormat, type ColorSample, type GuidePattern, type GuideStyle, MESURER_STORAGE_VERSION, Mesurer, type MesurerFeatures, type MesurerPageArtifacts, type MesurerPersistence, type MesurerPersistenceSnapshot, type MesurerProps, type MesurerSessionChrome, type MesurerStoredSettings, type MesurerStoredWorkspace, type PagedWorkspaceStore, type PenStroke, type Point, type RulerSettings, type ScreenshotSettings, type ShareMode, type TextAnnotation, type TextFont, TextInspector, type TextInspectorAPI, type TextInspectorOptions, type TextStyleSettings, type TypographyInfo, type TypographyRow, createLocalStoragePersistence, createPageScopedPersistence, createTextInspector, isPagedWorkspaceStore, normalizeStoredSettings, normalizeStoredWorkspace };
package/dist/index.d.ts CHANGED
@@ -111,12 +111,24 @@ type DistanceOverlay = {
111
111
  y: number;
112
112
  value: number;
113
113
  } | null;
114
+ extraHorizontals?: Array<{
115
+ x1: number;
116
+ x2: number;
117
+ y: number;
118
+ value: number;
119
+ }>;
114
120
  vertical: {
115
121
  y1: number;
116
122
  y2: number;
117
123
  x: number;
118
124
  value: number;
119
125
  } | null;
126
+ extraVerticals?: Array<{
127
+ y1: number;
128
+ y2: number;
129
+ x: number;
130
+ value: number;
131
+ }>;
120
132
  connectors: Array<{
121
133
  x1: number;
122
134
  y1: number;
@@ -133,9 +145,25 @@ type TextStyleSettings = {
133
145
  color: string;
134
146
  };
135
147
 
148
+ type LayoutGuideKind = "columns" | "rows" | "grid";
149
+ type LayoutGuideAlign = "stretch" | "min" | "center" | "max";
150
+ type LayoutGuide = {
151
+ id: string;
152
+ kind: LayoutGuideKind;
153
+ visible: boolean;
154
+ color: string;
155
+ opacity: number;
156
+ count: number;
157
+ size: number;
158
+ gutter: number;
159
+ offset: number;
160
+ align: LayoutGuideAlign;
161
+ };
162
+
136
163
  declare const MESURER_STORAGE_VERSION = 2;
137
164
  type GuidePattern = "solid" | "dashed" | "dotted";
138
165
  type InfoCardMode = "hover" | "click";
166
+ type ThemeMode = "system" | "light" | "dark";
139
167
  type GuideStyle = {
140
168
  opacity: number;
141
169
  width: number;
@@ -147,12 +175,18 @@ type RulerSettings = {
147
175
  opacity: number;
148
176
  edgeReveal: boolean;
149
177
  };
178
+ type ShareMode = "screenshot" | "record";
150
179
  type ScreenshotSettings = {
151
180
  copy: boolean;
152
181
  download: boolean;
182
+ shareMode: ShareMode;
153
183
  };
154
184
  type MesurerStoredSettings = {
155
185
  lastToolMode?: PersistentToolMode;
186
+ toolbarPosition?: {
187
+ x: number;
188
+ y: number;
189
+ };
156
190
  highlightColor?: string;
157
191
  guideColor?: string;
158
192
  arrowColor?: string;
@@ -170,17 +204,21 @@ type MesurerStoredSettings = {
170
204
  infoCardMode?: InfoCardMode;
171
205
  persistOnReload?: boolean;
172
206
  shortcutsEnabled?: boolean;
207
+ theme?: ThemeMode;
173
208
  guideStyle?: Partial<GuideStyle>;
174
209
  rulerSettings?: Partial<RulerSettings>;
175
210
  screenshotSettings?: Partial<ScreenshotSettings>;
176
211
  textStyle?: Partial<TextStyleSettings>;
177
212
  };
178
- type MesurerStoredWorkspace = {
213
+ type MesurerSessionChrome = {
179
214
  enabled: boolean;
215
+ minimized?: boolean;
180
216
  xrayVisible: boolean;
181
217
  toolMode: ToolMode;
182
218
  rulersVisible: boolean;
183
219
  guideOrientation: "vertical" | "horizontal";
220
+ };
221
+ type MesurerPageArtifacts = {
184
222
  guides: Guide[];
185
223
  selectedGuideIds: string[];
186
224
  arrows: Arrow[];
@@ -193,10 +231,16 @@ type MesurerStoredWorkspace = {
193
231
  activeMeasurement: Measurement | null;
194
232
  heldDistances: DistanceOverlay[];
195
233
  comments?: CommentThread[];
234
+ layoutGuides?: LayoutGuide[];
196
235
  };
236
+ type MesurerStoredWorkspace = MesurerSessionChrome & MesurerPageArtifacts;
237
+ type PagedWorkspaceStore = MesurerSessionChrome & {
238
+ pages: Record<string, MesurerPageArtifacts | null>;
239
+ };
240
+ declare const isPagedWorkspaceStore: (value: unknown) => value is PagedWorkspaceStore;
197
241
  type MesurerPersistenceSnapshot = {
198
242
  settings: MesurerStoredSettings;
199
- workspace: MesurerStoredWorkspace | null;
243
+ workspace: MesurerStoredWorkspace | PagedWorkspaceStore | null;
200
244
  };
201
245
  type PersistenceChangeSource = {
202
246
  settings?: boolean;
@@ -205,7 +249,7 @@ type PersistenceChangeSource = {
205
249
  type MesurerPersistence = {
206
250
  load: () => MesurerPersistenceSnapshot | null;
207
251
  saveSettings: (settings: MesurerStoredSettings) => void;
208
- saveWorkspace: (workspace: MesurerStoredWorkspace) => void;
252
+ saveWorkspace: (workspace: MesurerStoredWorkspace | PagedWorkspaceStore) => void;
209
253
  clearWorkspace: () => void;
210
254
  clearSettings: () => void;
211
255
  subscribe?: (listener: (snapshot: MesurerPersistenceSnapshot | null, source?: PersistenceChangeSource) => void) => () => void;
@@ -214,6 +258,7 @@ type MesurerPersistence = {
214
258
  declare const normalizeStoredSettings: (value: unknown) => MesurerStoredSettings;
215
259
  declare const normalizeStoredWorkspace: (value: unknown) => MesurerStoredWorkspace | null;
216
260
  declare const createLocalStoragePersistence: (ownerWindow: Window, workspaceKey: string, settingsKey?: string, legacyKey?: string) => MesurerPersistence;
261
+ declare const createPageScopedPersistence: (base: MesurerPersistence, getPageKey: () => string) => MesurerPersistence;
217
262
 
218
263
  type MesurerFeatures = {
219
264
  screenshot?: boolean;
@@ -221,6 +266,28 @@ type MesurerFeatures = {
221
266
  settings?: boolean;
222
267
  };
223
268
 
269
+ type ExtensionRecordingSession = {
270
+ prepare: () => Promise<void>;
271
+ start: (input: {
272
+ rect: {
273
+ left: number;
274
+ top: number;
275
+ width: number;
276
+ height: number;
277
+ };
278
+ viewport: {
279
+ width: number;
280
+ height: number;
281
+ };
282
+ }) => Promise<void>;
283
+ stop: () => Promise<{
284
+ id: string;
285
+ duration: number;
286
+ }>;
287
+ abort: () => void;
288
+ dispose?: () => void;
289
+ };
290
+
224
291
  type MesurerProps = {
225
292
  highlightColor?: string;
226
293
  guideColor?: string;
@@ -229,7 +296,9 @@ type MesurerProps = {
229
296
  hoverHighlightEnabled?: boolean;
230
297
  layoutDetailsEnabled?: boolean;
231
298
  persistOnReload?: boolean;
299
+ persistSession?: boolean;
232
300
  shortcutsEnabled?: boolean;
301
+ theme?: ThemeMode;
233
302
  portalTarget?: HTMLElement | ShadowRoot;
234
303
  persistKey?: string;
235
304
  colorPickerFormats?: ColorPickerFormat[];
@@ -246,6 +315,8 @@ type MesurerProps = {
246
315
  persistence?: MesurerPersistence;
247
316
  onPersistenceError?: (error: unknown) => void;
248
317
  captureVisibleTab?: () => Promise<Blob>;
318
+ extensionRecording?: ExtensionRecordingSession;
319
+ extensionRecordingPlayer?: string;
249
320
  features?: MesurerFeatures;
250
321
  initialState?: {
251
322
  enabled?: boolean;
@@ -270,10 +341,11 @@ type MesurerProps = {
270
341
  activeMeasurement?: MesurerStoredWorkspace["activeMeasurement"];
271
342
  heldDistances?: MesurerStoredWorkspace["heldDistances"];
272
343
  comments?: CommentThread[];
344
+ layoutGuides?: MesurerStoredWorkspace["layoutGuides"];
273
345
  };
274
346
  };
275
347
 
276
- declare function Mesurer({ highlightColor, guideColor, arrowColor, guideHighlightEnabled, hoverHighlightEnabled, layoutDetailsEnabled, persistOnReload, shortcutsEnabled, portalTarget, persistKey, colorPickerFormats, colorPickerClickFormat, snapEnabled, snapGuidesEnabled, snapArrowsEnabled, arrowClickToPlace, selectNewGuideEnabled, multiMeasureEnabled, guideStyle, rulerSettings, textStyle, persistence, onPersistenceError, captureVisibleTab, features, initialState, }: MesurerProps): react_jsx_runtime.JSX.Element | null;
348
+ declare function Mesurer({ highlightColor, guideColor, arrowColor, guideHighlightEnabled, hoverHighlightEnabled, layoutDetailsEnabled, persistOnReload, persistSession, shortcutsEnabled, theme, portalTarget, persistKey, colorPickerFormats, colorPickerClickFormat, snapEnabled, snapGuidesEnabled, snapArrowsEnabled, arrowClickToPlace, selectNewGuideEnabled, multiMeasureEnabled, guideStyle, rulerSettings, textStyle, persistence, onPersistenceError, captureVisibleTab, extensionRecording, extensionRecordingPlayer, features, initialState, }: MesurerProps): react_jsx_runtime.JSX.Element | null;
277
349
 
278
350
  type TypographyRow = {
279
351
  label: string;
@@ -312,4 +384,4 @@ type TextInspectorOptions = {
312
384
  declare const createTextInspector: (options?: TextInspectorOptions, legacy?: boolean) => TextInspectorAPI;
313
385
  declare const TextInspector: TextInspectorAPI;
314
386
 
315
- export { type Arrow, type ColorPickerFormat, type ColorSample, type GuidePattern, type GuideStyle, MESURER_STORAGE_VERSION, Mesurer, type MesurerFeatures, type MesurerPersistence, type MesurerPersistenceSnapshot, type MesurerProps, type MesurerStoredSettings, type MesurerStoredWorkspace, type PenStroke, type Point, type RulerSettings, type ScreenshotSettings, type TextAnnotation, type TextFont, TextInspector, type TextInspectorAPI, type TextInspectorOptions, type TextStyleSettings, type TypographyInfo, type TypographyRow, createLocalStoragePersistence, createTextInspector, normalizeStoredSettings, normalizeStoredWorkspace };
387
+ export { type Arrow, type ColorPickerFormat, type ColorSample, type GuidePattern, type GuideStyle, MESURER_STORAGE_VERSION, Mesurer, type MesurerFeatures, type MesurerPageArtifacts, type MesurerPersistence, type MesurerPersistenceSnapshot, type MesurerProps, type MesurerSessionChrome, type MesurerStoredSettings, type MesurerStoredWorkspace, type PagedWorkspaceStore, type PenStroke, type Point, type RulerSettings, type ScreenshotSettings, type ShareMode, type TextAnnotation, type TextFont, TextInspector, type TextInspectorAPI, type TextInspectorOptions, type TextStyleSettings, type TypographyInfo, type TypographyRow, createLocalStoragePersistence, createPageScopedPersistence, createTextInspector, isPagedWorkspaceStore, normalizeStoredSettings, normalizeStoredWorkspace };