@markerjs/markerjs3 3.1.0 → 3.3.0

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/markerjs3.d.ts CHANGED
@@ -155,6 +155,14 @@ declare class SvgHelper {
155
155
  * @returns SVG image element
156
156
  */
157
157
  static createSvgFromString(stringSvg: string): SVGSVGElement;
158
+ /**
159
+ * Creates an SVG filter element.
160
+ * @param id filter id
161
+ * @param attributes other filter element attributes
162
+ * @param innerHTML filter definition as string
163
+ * @returns filter element
164
+ */
165
+ static createFilter(id: string, attributes?: Array<[string, string]>, innerHTML?: string): SVGFilterElement;
158
166
  }
159
167
 
160
168
  /**
@@ -244,6 +252,13 @@ interface AnnotationState {
244
252
  * Height of the annotation.
245
253
  */
246
254
  height: number;
255
+ /**
256
+ * Default SVG filter to apply to markers in the annotation.
257
+ * (e.g. drop shadow, outline, glow)
258
+ *
259
+ * @since 3.2.0
260
+ */
261
+ defaultFilter?: string;
247
262
  /**
248
263
  * Array of marker states for markers in the annotation.
249
264
  */
@@ -278,6 +293,16 @@ declare class MarkerBase {
278
293
  * Returns marker type name for the object instance.
279
294
  */
280
295
  get typeName(): string;
296
+ /**
297
+ * Marker type title (display name) used for accessibility and other attributes.
298
+ */
299
+ static title: string;
300
+ /**
301
+ * When true, the default filter is applied to the marker's visual.
302
+ *
303
+ * @since 3.2.0
304
+ */
305
+ static applyDefaultFilter: boolean;
281
306
  /**
282
307
  * SVG container object holding the marker's visual.
283
308
  *
@@ -302,10 +327,6 @@ declare class MarkerBase {
302
327
  * The default marker size when the marker is created with a click (without dragging).
303
328
  */
304
329
  defaultSize: ISize;
305
- /**
306
- * Marker type title (display name) used for accessibility and other attributes.
307
- */
308
- static title: string;
309
330
  /**
310
331
  * Marker lifecycle stage.
311
332
  *
@@ -854,6 +875,7 @@ declare class PolygonMarker extends MarkerBase {
854
875
  selectorVisualLines: SVGLineElement[];
855
876
  visibleVisual: SVGGraphicsElement | undefined;
856
877
  protected applyStrokeColor(): void;
878
+ protected applyFillColor(): void;
857
879
  protected applyStrokeWidth(): void;
858
880
  protected applyStrokeDasharray(): void;
859
881
  protected applyOpacity(): void;
@@ -909,6 +931,7 @@ interface FreehandMarkerState extends MarkerBaseState {
909
931
  declare class FreehandMarker extends MarkerBase {
910
932
  static typeName: string;
911
933
  static title: string;
934
+ static applyDefaultFilter: boolean;
912
935
  /**
913
936
  * Points of the freehand line.
914
937
  */
@@ -1250,6 +1273,7 @@ declare class TextMarker extends RectangularBoxMarkerBase {
1250
1273
  declare class CoverMarker extends ShapeMarkerBase {
1251
1274
  static typeName: string;
1252
1275
  static title: string;
1276
+ static applyDefaultFilter: boolean;
1253
1277
  constructor(container: SVGGElement);
1254
1278
  protected getPath(width?: number, height?: number): string;
1255
1279
  }
@@ -1263,6 +1287,7 @@ declare class CoverMarker extends ShapeMarkerBase {
1263
1287
  declare class HighlightMarker extends ShapeMarkerBase {
1264
1288
  static typeName: string;
1265
1289
  static title: string;
1290
+ static applyDefaultFilter: boolean;
1266
1291
  constructor(container: SVGGElement);
1267
1292
  protected getPath(width?: number, height?: number): string;
1268
1293
  }
@@ -1590,6 +1615,32 @@ declare class CurveMarker extends LineMarker {
1590
1615
  restoreState(state: CurveMarkerState): void;
1591
1616
  }
1592
1617
 
1618
+ /**
1619
+ * Highlighter marker imitates a freeform highlighter pen.
1620
+ *
1621
+ * @summary Semi-transparent freeform marker.
1622
+ * @group Markers
1623
+ * @since 3.2.0
1624
+ */
1625
+ declare class HighlighterMarker extends FreehandMarker {
1626
+ static typeName: string;
1627
+ static title: string;
1628
+ static applyDefaultFilter: boolean;
1629
+ constructor(container: SVGGElement);
1630
+ }
1631
+
1632
+ /**
1633
+ * A set of common SVG filters that can be used to make markers more legible
1634
+ * or just for visual effect.
1635
+ */
1636
+ declare class SvgFilters {
1637
+ /**
1638
+ * Returns a set of default filters that can be used to make markers more legible.
1639
+ * @returns array of SVG filters.
1640
+ */
1641
+ static getDefaultFilterSet(): SVGFilterElement[];
1642
+ }
1643
+
1593
1644
  /**
1594
1645
  * Properties for marker editor.
1595
1646
  */
@@ -2055,15 +2106,43 @@ declare class MarkerArea extends HTMLElement {
2055
2106
  private prevPanPoint;
2056
2107
  private panTo;
2057
2108
  private undoRedoManager;
2109
+ private _defaultFilter?;
2110
+ /**
2111
+ * Returns the default SVG filter for the created markers.
2112
+ *
2113
+ * @since 3.2.0
2114
+ */
2115
+ get defaultFilter(): string | undefined;
2116
+ /**
2117
+ * Sets the default SVG filter for the created markers.
2118
+ *
2119
+ * @remarks
2120
+ * The filter should be a valid SVG filter string.
2121
+ *
2122
+ * In Chromium-based browsers and Firefox, you can use CSS filter strings
2123
+ * e.g. "drop-shadow(2px 2px 2px black)". Unfortunately, at the time of
2124
+ * the implementation this doesn't work in Safari (meaning any browser on iOS as well).
2125
+ *
2126
+ * For cross-browser compatibility, version 3.3 introduces a set of default filters.
2127
+ * These are dropShadow, outline, and glow. You can use them by setting the defaultFilter
2128
+ * to "url(#dropShadow)", "url(#outline)", or "url(#glow)" respectively.
2129
+ *
2130
+ * @since 3.2.0
2131
+ */
2132
+ set defaultFilter(value: string | undefined);
2133
+ private _defsElement?;
2134
+ private _defs;
2058
2135
  constructor();
2059
2136
  private connectedCallback;
2060
2137
  private disconnectedCallback;
2061
2138
  private createLayout;
2062
2139
  private addMainCanvas;
2140
+ private addDefsToMainCanvas;
2063
2141
  private setMainCanvasSize;
2064
2142
  private setEditingTargetSize;
2065
2143
  private initOverlay;
2066
2144
  private addTargetImage;
2145
+ private addDefaultFilterDefs;
2067
2146
  /**
2068
2147
  * Registers a marker type and its editor to be available in the marker area.
2069
2148
  * @param markerType
@@ -2177,6 +2256,14 @@ declare class MarkerArea extends HTMLElement {
2177
2256
  */
2178
2257
  redo(): void;
2179
2258
  private redoStep;
2259
+ /**
2260
+ * Adds "defs" to main canvas SVG.
2261
+ * Useful for filters, custom fonts and potentially other scenarios.
2262
+ *
2263
+ * @param nodes
2264
+ * @since 3.3.0
2265
+ */
2266
+ addDefs(...nodes: (string | Node)[]): void;
2180
2267
  addEventListener<T extends keyof MarkerAreaEventMap>(type: T, listener: (this: MarkerArea, ev: MarkerAreaEventMap[T]) => void, options?: boolean | AddEventListenerOptions): void;
2181
2268
  addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => void, options?: boolean | AddEventListenerOptions | undefined): void;
2182
2269
  removeEventListener<T extends keyof MarkerAreaEventMap>(type: T, listener: (this: MarkerArea, ev: MarkerAreaEventMap[T]) => void, options?: boolean | EventListenerOptions): void;
@@ -2956,15 +3043,33 @@ declare class MarkerView extends HTMLElement {
2956
3043
  * Sets the current zoom level.
2957
3044
  */
2958
3045
  set zoomLevel(value: number);
3046
+ private _defaultFilter?;
3047
+ /**
3048
+ * Returns the default SVG filter for the created markers.
3049
+ *
3050
+ * @since 3.2.0
3051
+ */
3052
+ get defaultFilter(): string | undefined;
3053
+ /**
3054
+ * Sets the default SVG filter for the created markers
3055
+ * (e.g. "drop-shadow(2px 2px 2px black)").
3056
+ *
3057
+ * @since 3.2.0
3058
+ */
3059
+ set defaultFilter(value: string | undefined);
2959
3060
  private _isInitialized;
3061
+ private _defsElement?;
3062
+ private _defs;
2960
3063
  constructor();
2961
3064
  private connectedCallback;
2962
3065
  private disconnectedCallback;
2963
3066
  private createLayout;
2964
3067
  private addMainCanvas;
3068
+ private addDefsToMainCanvas;
2965
3069
  private setMainCanvasSize;
2966
3070
  private setEditingTargetSize;
2967
3071
  private addTargetImage;
3072
+ private addDefaultFilterDefs;
2968
3073
  private addNewMarker;
2969
3074
  private attachMarkerEvents;
2970
3075
  private attachEvents;
@@ -2996,6 +3101,12 @@ declare class MarkerView extends HTMLElement {
2996
3101
  private addLogo;
2997
3102
  private removeLogo;
2998
3103
  private positionLogo;
3104
+ /**
3105
+ * Adds "defs" to main canvas SVG.
3106
+ * Useful for filters, custom fonts and potentially other scenarios.
3107
+ * @since 3.3.0
3108
+ */
3109
+ addDefs(...nodes: (string | Node)[]): void;
2999
3110
  addEventListener<T extends keyof MarkerViewEventMap>(type: T, listener: (this: MarkerView, ev: MarkerViewEventMap[T]) => void, options?: boolean | AddEventListenerOptions): void;
3000
3111
  addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => void, options?: boolean | AddEventListenerOptions | undefined): void;
3001
3112
  removeEventListener<T extends keyof MarkerViewEventMap>(type: T, listener: (this: MarkerView, ev: MarkerViewEventMap[T]) => void, options?: boolean | EventListenerOptions): void;
@@ -3103,12 +3214,30 @@ declare class Renderer {
3103
3214
  * Both `width` and `height` have to be set for this to take effect.
3104
3215
  */
3105
3216
  height?: number;
3217
+ private _defaultFilter?;
3218
+ /**
3219
+ * Returns the default SVG filter for the created markers.
3220
+ *
3221
+ * @since 3.2.0
3222
+ */
3223
+ get defaultFilter(): string | undefined;
3224
+ /**
3225
+ * Sets the default SVG filter for the created markers
3226
+ * (e.g. "drop-shadow(2px 2px 2px black)").
3227
+ *
3228
+ * @since 3.2.0
3229
+ */
3230
+ set defaultFilter(value: string | undefined);
3231
+ private _defsElement?;
3232
+ private _defs;
3106
3233
  constructor();
3107
3234
  private init;
3108
3235
  private addMainCanvas;
3236
+ private addDefsToMainCanvas;
3109
3237
  private setMainCanvasSize;
3110
3238
  private setEditingTargetSize;
3111
3239
  private addTargetImage;
3240
+ private addDefaultFilterDefs;
3112
3241
  private addNewMarker;
3113
3242
  private getMarkerTypeByName;
3114
3243
  /**
@@ -3129,6 +3258,12 @@ declare class Renderer {
3129
3258
  * @returns
3130
3259
  */
3131
3260
  rasterize(state: AnnotationState, targetCanvas?: HTMLCanvasElement): Promise<string>;
3261
+ /**
3262
+ * Adds "defs" to main canvas SVG.
3263
+ * Useful for filters, custom fonts and potentially other scenarios.
3264
+ * @since 3.3.0
3265
+ */
3266
+ addDefs(...nodes: (string | Node)[]): void;
3132
3267
  }
3133
3268
 
3134
- export { Activator, type AnnotationState, ArrowMarker, ArrowMarkerEditor, type ArrowMarkerState, type ArrowType, type BlurHandler, CalloutMarker, CalloutMarkerEditor, type CalloutMarkerState, CaptionFrameMarker, CaptionFrameMarkerEditor, type CaptionFrameMarkerState, CheckImageMarker, CoverMarker, CurveMarker, CurveMarkerEditor, type CurveMarkerState, CustomImageMarker, EllipseFrameMarker, EllipseMarker, type FontSize, FrameMarker, FreehandMarker, FreehandMarkerEditor, type FreehandMarkerState, Grip, type GripLocation, HighlightMarker, type IPoint, type ISize, type ITransformMatrix, ImageMarkerBase, type ImageMarkerBaseState, ImageMarkerEditor, type ImageType, LineMarker, LinearMarkerBase, type LinearMarkerBaseState, LinearMarkerEditor, MarkerArea, type MarkerAreaEventData, type MarkerAreaEventMap, type MarkerAreaMode, MarkerBase, MarkerBaseEditor, type MarkerBaseState, type MarkerCreationStyle, type MarkerEditorEventData, type MarkerEditorProperties, type MarkerEditorState, type MarkerEventData, type MarkerStage, MarkerView, type MarkerViewEventData, type MarkerViewEventMap, MeasurementMarker, PolygonMarker, PolygonMarkerEditor, type PolygonMarkerState, RectangularBoxMarkerBase, type RectangularBoxMarkerBaseState, Renderer, ResizeGrip, RotateGrip, ShapeMarkerBase, type ShapeMarkerBaseState, ShapeMarkerEditor, ShapeOutlineMarkerBase, type ShapeOutlineMarkerBaseState, ShapeOutlineMarkerEditor, SvgHelper, TextBlock, TextBlockEditor, type TextChangedHandler, TextMarker, TextMarkerEditor, type TextMarkerState, XImageMarker };
3269
+ export { Activator, type AnnotationState, ArrowMarker, ArrowMarkerEditor, type ArrowMarkerState, type ArrowType, type BlurHandler, CalloutMarker, CalloutMarkerEditor, type CalloutMarkerState, CaptionFrameMarker, CaptionFrameMarkerEditor, type CaptionFrameMarkerState, CheckImageMarker, CoverMarker, CurveMarker, CurveMarkerEditor, type CurveMarkerState, CustomImageMarker, EllipseFrameMarker, EllipseMarker, type FontSize, FrameMarker, FreehandMarker, FreehandMarkerEditor, type FreehandMarkerState, Grip, type GripLocation, HighlightMarker, HighlighterMarker, type IPoint, type ISize, type ITransformMatrix, ImageMarkerBase, type ImageMarkerBaseState, ImageMarkerEditor, type ImageType, LineMarker, LinearMarkerBase, type LinearMarkerBaseState, LinearMarkerEditor, MarkerArea, type MarkerAreaEventData, type MarkerAreaEventMap, type MarkerAreaMode, MarkerBase, MarkerBaseEditor, type MarkerBaseState, type MarkerCreationStyle, type MarkerEditorEventData, type MarkerEditorProperties, type MarkerEditorState, type MarkerEventData, type MarkerStage, MarkerView, type MarkerViewEventData, type MarkerViewEventMap, MeasurementMarker, PolygonMarker, PolygonMarkerEditor, type PolygonMarkerState, RectangularBoxMarkerBase, type RectangularBoxMarkerBaseState, Renderer, ResizeGrip, RotateGrip, ShapeMarkerBase, type ShapeMarkerBaseState, ShapeMarkerEditor, ShapeOutlineMarkerBase, type ShapeOutlineMarkerBaseState, ShapeOutlineMarkerEditor, SvgFilters, SvgHelper, TextBlock, TextBlockEditor, type TextChangedHandler, TextMarker, TextMarkerEditor, type TextMarkerState, XImageMarker };