0.1.0 • Published 3 years ago

vue-img-mapper v0.1.0

Weekly downloads
3
License
MIT
Repository
github
Last release
3 years ago

Vue Img Mapper

Vue Component to highlight interactive zones in images

This repository is based on react-img-mapper but with vue support

1. Promise to be maintained this repository
2. Selected area will stay highlighted ( Single & Multiple ) with toggle and reset feature
3. New Properties: Natural Dimensions, RerenderProps       
4. Image Reference in Width, Height and onLoad function to access image properties  
5. Responsive Image Mapper  
6. Compatible with nuxt.js

Installation

Package: vue-img-mapper

NPM

npm install vue-img-mapper --save        

Yarn

yarn add vue-img-mapper      

Demo & Examples

Live demo: demo

To run the example locally

git clone https://github.com/img-mapper/react-docs.git
npm install        
npm start        

Then open localhost:3000 in a browser.

If you want to change something and want to make a build file, you just need to run npm run build

Currently, The documentation is in react, but I am trying to make vue docs as soon as possible

Usage

Import the component as you normally do, and add it wherever you like in your JSX views as below:

<template>
  <ImageMapper :src="src" :map="map" />
</template>

<script>
import ImageMapper from 'vue-img-mapper';

export default {
  name: 'Mapper',
  components: { ImageMapper },
  computed: {
    src: () => 'https://raw.githubusercontent.com/img-mapper/react-docs/master/src/assets/example.jpg',
    map() {
      return {
        name: 'my-map',
        // GET JSON FROM BELOW URL AS AN EXAMPLE
        areas: 'https://raw.githubusercontent.com/img-mapper/react-docs/master/src/assets/example.json',
      };
    },
  },
};
</script>

Properties

PropsTypeDescriptionDefault
srcstringImage source urlrequired
mapstringMapping description{ name: generated, areas: }
areaKeyNamestringdefault unique key name ( required for stayHighlighted )id
fillColorstringFill color of the highlighted zonergba(255, 255, 255, 0.5)
strokeColorstringBorder color of the highlighted zonergba(0, 0, 0, 0.5)
lineWidthnumberBorder thickness of the highlighted zone1
widthnumber | funcImage width, in function you will get image reference object0
heightnumber | funcImage height, in function you will get image reference object0
activeboolEnable/Disable highlightingtrue
disabledboolEnable/Disable area listeners and highlightingfalse
imgWidthnumberOriginal image width0
naturalboolGive the original dimensions ( height & width ) to canvas and image wrapperfalse
stayHighlightedboolYou can see the highlighted area after clicking on the particular areafalse
stayMultiHighlightedboolYou can see the multiple highlighted area after clicking on the particular areafalse
toggleHighlightedboolYou can toggle selected highlighted areafalse
responsiveboolresponsive map in all resolution ( for enable it you need to specify parentWidth )false
parentWidthnumberparent max width for responsive0

Properties Callback

Props callbacksCalled onsignature
@loadImage loading and canvas initialization completed(imageRef: obj, parentDimensions: { width, height }): void
@clickClick on a zone in image(area: obj, index: num, event): void
@mouseenterHovering a zone in image(area: obj, index: num, event): void
@mouseleaveLeaving a zone in image(area: obj, index: num, event): void
@mousemoveMoving mouse on a zone in image(area: obj, index: num, event): void
@mousedownClicks any button of the mouse on a zone in image(area: obj, index: num, event): void
@mouseupReleases left click of the mouse on a zone in image(area: obj, index: num, event): void
@touchstartStart to touch the zone in image(area: obj, index: num, event): void
@touchendReleases touch from the zone in image(area: obj, index: num, event): void
@imageClickClick outside of a zone in image(event): void
@imageMouseMoveMoving mouse on the image itself(event): void

Methods

MethodDescription
clearHighlightedAreaClear all selected highlighted area from your map

Map Properties

A map is an object describing highlighted areas in the image.

Its structure is similar to the HTML syntax of mapping:

  • map: (object) Object to describe highlighted zones
    • name: (string) Name of the map, used to bind to the image.
    • areas: (array) Array of area objects - area: (object) Shaped like below :
PropertyTypeDescriptionDefault
idstringUniquely identify an area. An index in an array is used if this value is not provided. You can set it with areaKeyName propertyindex
shapestringEither rect, circle or polyrequired
coordsarray of numberCoordinates delimiting the zone according to the specified shape: rect: top-left-X,top-left-Y,bottom-right-X,bottom-right-Ycircle: center-X,center-Y,radiuspoly: Every point in the polygon path as point-X,point-Y,...requiredactivestringEnable/Disable highlightingtrue
disabledstringEnable/Disable area listeners and highlightingfalse
hrefstringTarget link for a click in the zone (note that if you provide an onClick prop, href will be prevented)undefined
fillColorstringFill color of the highlighted zonergba(255, 255, 255, 0.5)
strokeColorstringBorder color of the highlighted zonergba(0, 0, 0, 0.5)
lineWidthstringBorder thickness of the highlighted zone1
preFillColorstringPre filled color of the highlighted zoneundefined

When received from an event handler, an area is extended with the following properties:

PropertytypeDescription
scaledCoordsarray of numberScaled coordinates
centerarray of numberCoordinates positioning the center or centroid of the area: [X, Y]

License

Distributed with an MIT License. See LICENSE.txt for more details!

Copyright (c) 2021 Nisharg Shah