Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@trimblemaps/trimblemaps-customplaces

Package Overview
Dependencies
Maintainers
5
Versions
10
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@trimblemaps/trimblemaps-customplaces - npm Package Compare versions

Comparing version 1.0.2 to 1.0.3

2

package.json
{
"name": "@trimblemaps/trimblemaps-customplaces",
"version": "1.0.2",
"version": "1.0.3",
"description": "Custom Places Addon",

@@ -5,0 +5,0 @@ "main": "trimblemaps-customplaces.js",

@@ -1,3 +0,33 @@

import TrimbleMaps, { ClickControlBase, MapLayerMouseEvent, MapLayerTouchEvent } from '@trimblemaps/trimblemaps-js';
import TrimbleMaps, { ContentBase, ContentOptions, ClickControlBase, MapLayerMouseEvent, MapLayerTouchEvent } from '@trimblemaps/trimblemaps-js';
/**
* Custom Places Content Layer
* @param options
*/
declare class CustomPlacesLayer extends ContentBase {
private _map;
private _options;
private _urls;
private _cpSourceData;
private _layerNames;
private _filterObjects;
private _selectElements;
private _cpSetFilter;
private _visibleTypes;
private _enabledTypes;
constructor(map?: TrimbleMaps.Map, options?: ContentOptions);
_getContent(): void;
/**
* Sets the map view to fit the Custom Places layer.
* @returns {getCustomPlacesLayer} `this`
*/
frameSet(setID: string): this;
_getEnabledTypes(): string[];
_filterFeatures(): void;
_getBaseFilter(): string[];
_getFilter(): any[];
setSelectedSets(setIds: string[]): void;
_refreshCPList(): void;
}
type defaultOptions = {

@@ -42,2 +72,3 @@ layerId: string;

showAll: boolean;
selectedIds?: string[];
};

@@ -115,4 +146,5 @@ /**

CustomPlaceClickControl(): CustomPlaceClickControl;
CustomPlacesLayer(): CustomPlacesLayer;
}
export { CustomPlaces as default };

@@ -1,1 +0,1 @@

!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("@trimblemaps/trimblemaps-js")):"function"==typeof define&&define.amd?define(["@trimblemaps/trimblemaps-js"],t):((e="undefined"!=typeof globalThis?globalThis:e||self).TrimbleMapsControl=e.TrimbleMapsControl||{},e.TrimbleMapsControl.CustomPlaces=t(e.TrimbleMaps))}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=t(e),s=function(e,t){return s=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a])},s(e,t)};function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function a(){this.constructor=e}s(e,t),e.prototype=null===t?Object.create(t):(a.prototype=t.prototype,new a)}function n(e,t,a){if(a||2===arguments.length)for(var s,i=0,n=t.length;i<n;i++)!s&&i in t||(s||(s=Array.prototype.slice.call(t,0,i)),s[i]=t[i]);return e.concat(s||Array.prototype.slice.call(t))}var r={STYLE_URL:"https://tiles.alk.com/styles/",BASE_URL:"https://tiles.alk.com/api/PrivatePlaces/"};function o(e){for(var t=[],a=1;a<arguments.length;a++)t[a-1]=arguments[a];for(var s=0,i=t;s<i.length;s++){var n=i[s];for(var r in n)e[r]=n[r]}return e}var c={layerId:"privateplaces",isVisible:!0},l=function(e){function t(t,a){var s=this,i=o({},c,a);return(s=e.call(this,i)||this)._urls=r,s._layerNames=[],s._map=t,s._enabledTypes=new Map,s}return i(t,e),t.prototype._getContent=function(){var e=this,t=a.default.TIDToken,s=t.tidToken,i=t.externalAccountId,n=a.default.APIToken?a.default.APIToken.includes("token")?a.default.APIToken:"token=".concat(a.default.APIToken):void 0,r={headers:{"Content-Type":"application/json"}};s&&(r.headers.tidtoken="".concat(s)),i&&(r.headers.extacctid="".concat(i)),s||(r.headers.Authorization=n?"".concat(n):a.default.APIKey);var o="".concat(this._urls.STYLE_URL,"v5/").concat(this._map.getRegion(),"/").concat(this._map.getStyleName(),"/").concat(this._options.layerId);this._layerNames=[],fetch(o,r).then((function(t){return e._map.fire("customplacesloading"),t.json()})).then((function(t){if(t.sources){for(var a in t.sources)e._map.getSource(a)||e._map.addSource(a,t.sources[a]);t.layers.length&&(t.layers.forEach((function(t){var a="".concat(e._options.layerId,"-").concat(t.id);e._layerNames.push(a),t.id=a;var s="places_point_basic";void 0!==t.metadata&&void 0!==t.metadata.beforeLayer&&(s=t.metadata.beforeLayer),e._map.getLayer(s)?e._map.addLayer(t,s):e._map.addLayer(t)})),e.setVisibility(e._options.isVisible)),e._map.fire("customplaces")}else console.warn(null==t?void 0:t.name)}))},t.prototype.frameSet=function(e){var t,a,s,i;if(this._cpSourceData.length){var n=this._cpSourceData.filter((function(t){return t.properties.place_set_id===e.toString()}));if(n&&n.length){var r=n.length-1;this._map.fitBounds([[null===(t=n[r])||void 0===t?void 0:t.geometry.coordinates[0],null===(a=n[r])||void 0===a?void 0:a.geometry.coordinates[1]],[null===(s=n[r])||void 0===s?void 0:s.geometry.coordinates[0],null===(i=n[r])||void 0===i?void 0:i.geometry.coordinates[1]]],{padding:20,maxZoom:16})}}return this},t.prototype._getEnabledTypes=function(){var e=[];return this._cpSetFilter.forEach((function(t){t&&e.push(t.toString())})),e},t.prototype._filterFeatures=function(){var e=this._getEnabledTypes(),t=this._getBaseFilter();t.push(n(["in","place_set_id"],e,!0)),this._map.getLayer("privateplaces-privateplaces_all")&&(this._map.setFilter("privateplaces-privateplaces_sites",t),this._map.setFilter("privateplaces-privateplaces_all",t),this._map.setFilter("privateplaces-privateplaces_gates",t))},t.prototype._getBaseFilter=function(){return["all"]},t.prototype._getFilter=function(){var e=[];return(this._options.isVisible?this._selectElements:this._filterObjects).forEach((function(t){var a=t.id,s=t.value||t.default,i=[];"All"!==s&&(i.push("=="),i.push(a),i.push(s),e.push(i))})),e},t.prototype.setSelectedSets=function(e){this._cpSetFilter=e,this._filterFeatures()},t.prototype._refreshCPList=function(){var e,t=this,a=this._map.querySourceFeatures("PrivatePlaces",{sourceLayer:"places"}),s=this._map.querySourceFeatures("PrivatePlaces",{sourceLayer:"sites"}),i=this._map.querySourceFeatures("PrivatePlaces",{sourceLayer:"gates"}),n=a.concat(s,i);this._visibleTypes=n.map((function(e){return e.properties.place_set_id})).filter((function(e,t,a){return t===a.indexOf(e)})),this._visibleTypes.forEach((function(e){t._enabledTypes.has(e)||t._enabledTypes.set(e,!0)}));var r=document.getElementById("custom_places_ul"),o=null==r?void 0:r.getElementsByTagName("li");(null===(e=this._visibleTypes)||void 0===e?void 0:e.length)>0&&o?Array.from(o).map((function(e){e.classList.remove("trimblemaps-cp-list-disabled"),-1===t._visibleTypes.indexOf(e.getElementsByTagName("input")[0].getAttribute("data-cp-id").toString())&&(e.classList.contains("trimblemaps-cp-list-disabled")||e.classList.add("trimblemaps-cp-list-disabled"))})):o&&Array.from(o).map((function(e){e.classList.contains("trimblemaps-cp-list-disabled")||e.classList.add("trimblemaps-cp-list-disabled")})),this._cpSourceData=n},t}(e.ContentBase),p=function(){function e(){this.mapHandlers=new Map}return e.prototype.setMap=function(e){this.map=e},e.prototype.add=function(e){if(this.map){this.map.on(e.eventName,e.listener);var t=e.eventName+Date.now();return this.mapHandlers.set(t,e),t}console.warn("Handler cannot be added. The map has not been set for this manager.")},e.prototype.remove=function(e){var t=this.mapHandlers.get(e);this.map.off(t.eventName,t.listener),this.mapHandlers.delete(e)},e.prototype.removeAll=function(){var e=this;this.mapHandlers.forEach((function(t){e.map.off(t.eventName,t.listener)})),this.mapHandlers.clear()},e}(),m=function(t){function a(a){var s=this,i=o({layerId:"privateplaces",clickLayerIds:["privateplaces-privateplaces_all"]},a);return s=t.call(this,i)||this,e.Places.authenticate().then((function(e){if(e){s._token=JSON.parse(e).token;var t=document.getElementsByClassName("trimblemaps-ctrl");t&&Array.from(t).map((function(e){0===e.childNodes.length&&e.remove()}))}else console.error("places authentication failed. kindly verify the API key or token is valid.")}),(function(e){console.error(e)})),s}return i(a,t),a.prototype._onClick=function(t){var a=this,s=t.features;if(s&&s.length>0){if(s[0].properties&&s[0].properties.tpid){var i=s[0].properties.tpid;e.Places.getPlaceDetails({token:this._token,placeId:i}).then((function(t){var s=JSON.parse(t),i=document.createElement("div");i.className="trimblemaps-ctrl-plpopup",i.innerHTML='\n <h4>Location Details</h4>\n <div class="trimblemaps-custom-place-details-container">\n <div class="trimblemaps-custom-place-row">\n <div class="trimblemaps-custom-place-key">Name:</div>\n <div class="trimblemaps-custom-place-value">'.concat(s.name,"</div>\n </div>\n ").concat(a._formatAddress(s.formattedAddress),"\n ").concat(a._formatPhone(s.contactInfo.phone),"\n ").concat(a._formatUrl(s.contactInfo.url),"\n ").concat(a._formatOperatingHours(s.operatingHours),"\n ").concat(a._formatCatName(s.categoryName),"\n </div>"),a._popup&&a._popup.remove(),a._popup=new e.Popup({offset:20,maxWidth:"380px",closeButton:!1}).setLngLat(s.geometry.coordinates).setDOMContent(i).addTo(a._map)}),(function(e){console.error(e)}))}else{var n=document.createElement("div");n.className="trimblemaps-ctrl-trpopup",n.innerHTML="Details does not exist for this place.",this._popup&&this._popup.remove(),this._popup=new e.Popup({}).setLngLat(t.lngLat).setDOMContent(n).addTo(this._map)}t.preventDefault()}},a.prototype._formatOperatingHours=function(e){if(!e)return"";var t=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"].map((function(t){return"<div>".concat(e[t].formattedText,"</div>")})).join("");return'\n <div class="trimblemaps-custom-place-row trimblemaps-custom-place-accordion">\n <input type="checkbox" id="hours-toggle"/>\n <label class="trimblemaps-custom-place-key" for="hours-toggle">\n <div class="trimblemaps-custom-place-icon trimblemaps-place-clock"></div>\n Hours:</label>\n <label class="trimblemaps-custom-place-value" for="hours-toggle">\n <div class="trimblemaps-custom-place-icon trimblemaps-ctrl-icon-chevron-right"></div>\n <div class="trimblemaps-custom-place-hours-container trimblemaps-custom-place-accordion-content-shrink">'.concat(t,"</div>\n </label>\n </div>")},a.prototype._formatCatName=function(e){return e?'\n <div class="trimblemaps-custom-place-row">\n <div class="trimblemaps-custom-place-key">Category:</div>\n <div class="trimblemaps-custom-place-value">'.concat(e,"</div>\n </div>"):""},a.prototype._formatAddress=function(e){return e?'\n <div class="trimblemaps-custom-place-row">\n <div class="trimblemaps-custom-place-key">\n <div class="trimblemaps-custom-place-icon trimblemaps-place-pin"></div>\n Address:\n </div>\n <div class="trimblemaps-custom-place-value">'.concat(e,"</div>\n </div>"):""},a.prototype._formatPhone=function(e){return e?'\n <div class="trimblemaps-custom-place-row">\n <div class="trimblemaps-custom-place-key">\n <div class="trimblemaps-custom-place-icon trimblemaps-place-phone"></div>\n Phone:\n </div>\n <div class="trimblemaps-custom-place-value">'.concat(e,"</div>\n </div>"):""},a.prototype._formatUrl=function(e){if(!e)return"";var t=e?'<a href="'.concat(e,'" target="_blank" rel="noopener">').concat(e,"</a>"):"";return'\n <div class="trimblemaps-custom-place-row">\n <div class="trimblemaps-custom-place-key">\n <div class="trimblemaps-custom-place-icon trimblemaps-place-globe"></div>\n Website:\n </div>\n <div class="trimblemaps-custom-place-value">'.concat(t,"</div>\n </div>")},a.prototype._onContentVisibility=function(e){var t=this;(this._options.clickLayerIds||[]).forEach((function(a){a.startsWith(e.id)&&("visible"!==t._map.getLayoutProperty(a,"visibility")&&t._popup&&t._popup.isOpen()&&t._popup.remove())}))},a}(e.ClickControlBase),u={layerId:"privateplaces",isVisible:!0,showAll:!0};return function(){function e(e){var t=this;this._mapHandlerManager=new p,this._cpSetIds=[],this._selectedCPSets=[],this._customPlacesResponse=[],this._mapBasedContentLayers=["building3d","places"],this._urls=r,this._options=o({},u,e),this._outsideClickListener=function(e){var a;t._container.contains(e.target)||null===(a=t._layerMenu)||void 0===a||a.classList.remove("trimblemaps-cp-menu-container-open")}}return e.prototype.onAdd=function(e){var t=this;this._map=e,this._mapHandlerManager.setMap(this._map),this._container=document.createElement("div"),this._container.className="trimblemaps-ctrl trimblemaps-ctrl-group trimblemaps-cp-menu-ctrl";var a=document.createElement("button");a.className="trimblemaps-ctrl-icon trimblemaps-cp-menu-layers-button",a.title="Custom Places",a.type="button",a.addEventListener("click",(function(){t._toggleLayerMenu()}));var s=document.createElement("div");s.className="trimblemaps-cp-menu-container";var i=document.createElement("div");i.className="trimblemaps-cp-menu-arrow",s.appendChild(i);var n=document.createElement("h5");n.className="trimblemaps-cp-menu-title";var r=document.createElement("div");r.className="trimblemaps-cp-menu-list",this._layerMenu=s.cloneNode(!0),this._layerList=r.cloneNode(!0),n.innerHTML="Custom Places",this._layerMenu.appendChild(n.cloneNode(!0)),this._layerMenu.appendChild(this._layerList),this._layerMenu.classList.add("trimblemaps-cp-menu-content-layers"),this._createCPContainer(),this._container.appendChild(a),this._container.appendChild(this._layerMenu),this._container.classList.add("trimblemaps-cp-menu-has-layers");var o=document.createElement("div");return o.className="trimblemaps-cp-menu-divider",this._layerList.appendChild(o),this._map.once("load",(function(){t._setLayerZoomState()})),this._map.on("idle",(function(){t._map.getSource("PrivatePlaces")&&t._map.isSourceLoaded("PrivatePlaces")&&t._customPlacesLayerInstance._refreshCPList()})),this._map.on("zoomend",(function(){t._setLayerZoomState()})),this._initializeLayer(),document.addEventListener("click",this._outsideClickListener),this._container},e.prototype._createCPContainer=function(){var e=this,t=document.createElement("div"),a=t.cloneNode(!0);a.className="trimblemaps-cp-controls trimblemaps-cp-d-flex trimblemaps-cp-flex-row trimblemaps-cp-mt-1";var s=document.createElement("span");s.className="trimblemaps-cp-mt-1 trimblemaps-cp-ml-1",s.innerHTML="Show:";var i=document.createElement("button");i.addEventListener("click",(function(){for(var t=document.querySelector("#custom_places_ul").querySelectorAll('input[type="checkbox"]'),a=0;a<t.length;a++)t[a].checked=!0;e._selectedCPSets=n([],e._cpSetIds,!0),e._customPlacesLayerInstance.setSelectedSets(e._selectedCPSets),e._map.fire("allcustomplacesvisibilitychange",{setIds:e._selectedCPSets,isSelected:!0})})),i.className="trimblemaps-cp-btn trimblemaps-cp-btn-sm trimblemaps-cp-ml-1 trimblemaps-cp-btn-outline-dark",i.innerHTML="All";var r=i.cloneNode(!0);r.innerHTML="None",r.className="trimblemaps-cp-btn trimblemaps-cp-btn-sm trimblemaps-cp-ml-1 trimblemaps-cp-btn-outline-dark trimblemaps-cp-mr-1",r.addEventListener("click",(function(){for(var t=document.querySelector("#custom_places_ul").querySelectorAll('input[type="checkbox"]'),a=0;a<t.length;a++)t[a].checked=!1;e._selectedCPSets=[],e._customPlacesLayerInstance.setSelectedSets(e._selectedCPSets),e._map.fire("allcustomplacesvisibilitychange",{setIds:e._cpSetIds,isSelected:!1})})),a.appendChild(s),a.appendChild(i),a.appendChild(r);var o=document.createElement("div");o.className="trimblemaps-cp-input-with-icon-left trimblemaps-cp-left-margin trimblemaps-cp-mr-2";var c=document.createElement("INPUT");c.className="trimblemaps-cp-form-control search-desktop",c.setAttribute("type","search"),c.setAttribute("data-search-input",""),c.setAttribute("autocorrect","off"),c.setAttribute("spellcheck","false"),c.setAttribute("autocapitalize","off"),c.setAttribute("aria-label","filter"),c.setAttribute("placeholder","Filter"),c.addEventListener("input",(function(t){e._filterCPList(t)}));var l=document.createElement("div");l.className="trimblemaps-cp-input-icon",l.innerHTML='<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="currentColor" class="mi-solid mi-filter" viewBox="0 0 24 24"><path d="M19.9 4.56c-.17-.34-.52-.56-.9-.56H5c-.38 0-.73.22-.9.56a.98.98 0 0 0 .11 1.05L10 12.76v7.23c0 .89 1.08 1.34 1.71.71l2-2a.99.99 0 0 0 .29-.71v-5.24l5.79-7.15c.23-.3.27-.71.11-1.05Z"/></svg>',o.appendChild(c),o.appendChild(l),a.appendChild(o),t.appendChild(a),this._cpSetList=t},e.prototype.onRemove=function(){this._map&&(document.removeEventListener("click",this._outsideClickListener),this._container.parentNode.removeChild(this._container),this._mapHandlerManager.removeAll(),this._customPlacesLayerInstance&&(this._customPlacesLayerInstance.remove(),this._customPlacesLayerInstance=void 0),this._map=void 0)},e.prototype._initializeLayer=function(){this.setCPLayerVisibility(),this.getCustomPlaces()},e.prototype._toggleLayerMenu=function(){var e;null===(e=this._layerMenu)||void 0===e||e.classList.toggle("trimblemaps-cp-menu-container-open")},e.prototype.getCustomPlaces=function(){var e=this,t=a.default.TIDToken,s=t.tidToken,i=t.externalAccountId,r="".concat(this._urls.BASE_URL,"GetPrivatePlaceSets.json"),o=a.default.APIToken?a.default.APIToken.includes("token")?a.default.APIToken:"token=".concat(a.default.APIToken):void 0,c={headers:{"Content-Type":"application/json"}};s&&(c.headers.tidtoken="".concat(s)),i&&(c.headers.extacctid="".concat(i)),s||(c.headers.Authorization=o?"".concat(o):a.default.APIKey),fetch(r,c).then((function(e){return e.json()})).then((function(t){if(t.length){e._customPlacesResponse=t;var a=document.createElement("ul");a.id="custom_places_ul",a.className="trimblemaps-cp-list-group trimblemaps-cp-list-group-condensed",e._cpSetIds=[],t.forEach((function(t){t.groupCount>0&&(a.appendChild(e._getCPSetItem(t)),e._cpSetIds.push(t.setID))})),e._selectedCPSets=n([],e._cpSetIds,!0),e._cpSetList.appendChild(a),e._layerList.appendChild(e._cpSetList)}else{var s=document.createElement("span");s.className="trimblemaps-cp-ml-1",s.innerHTML='<p style="margin: 0.75rem; margin-top: unset;">Get access to Custom Places by using Content Tools.</p>',e._layerList.appendChild(s)}})).catch((function(t){var a=document.createElement("span");a.className="trimblemaps-cp-ml-1",a.innerHTML='<p style="margin: 0.75rem; margin-top: unset;">Get access to Custom Places by using Content Tools.</p>',e._layerList.appendChild(a),console.warn(t)}))},e.prototype._getCPSetItem=function(e){var t=this,a=document.createElement("li");a.className="trimblemaps-cp-list-group-item list-item-leftright-control trimblemaps-cp-list-disabled";var s=document.createElement("div");s.className="trimblemaps-cp-custom-control trimblemaps-cp-custom-switch trimblemaps-cp-custom-control-inline",document.createElement("div").className="result-info text-ellipsis flex-element";var i=document.createElement("label");i.className="trimblemaps-cp-custom-control-label",i.setAttribute("for",e.setID);var n=document.createElement("INPUT");n.className="trimblemaps-cp-custom-control-input",n.setAttribute("type","checkbox"),n.setAttribute("checked","true"),n.setAttribute("id",e.setID),n.setAttribute("data-cp-id",e.setID),n.setAttribute("data-cp-name",e.name),n.addEventListener("change",(function(a){var s=a.target.checked;t._showHideCPLayer(e,s)})),s.appendChild(n),s.appendChild(i);var r=e.name,o=document.createElement("span");o.innerHTML=r,o.className="trimblemaps-cp-txt-no-wrap",o.setAttribute("title",r);var c=document.createElement("span");return c.className="trimblemaps-cp-left-margin trimblemaps-cp-badge trimblemaps-cp-badge-tertiary trimblemaps-cp-badge-pill",c.setAttribute("title",e.groupCount+" Custom Places"),c.innerHTML=e.groupCount,a.appendChild(s),a.appendChild(o),a.appendChild(c),a},e.prototype._showHideCPLayer=function(e,t){if(t)this._selectedCPSets.push(e.setID);else{var a=this._selectedCPSets.findIndex((function(t){return t===e.setID}));this._selectedCPSets.splice(a,1)}this._customPlacesLayerInstance.setSelectedSets(this._selectedCPSets),this._map.fire("customplacevisibilitychange",{setId:e.setID,isSelected:t})},e.prototype._filterCPList=function(e){for(var t=e.target.value.trim().toUpperCase(),a=document.getElementById("custom_places_ul").getElementsByTagName("li"),s=0;s<a.length;s++){a[s].getElementsByTagName("input")[0].getAttribute("data-cp-name").toUpperCase().indexOf(t)>-1?a[s].style.display="":a[s].style.display="none"}},e.prototype._setLayerZoomState=function(){var e=this;document.querySelectorAll(".trimblemaps-cp-menu-layer-item").forEach((function(t){var a=parseInt(t.getAttribute("data-layer-minzoom"));e._map.getZoom()>=a?(t.classList.remove("trimblemaps-cp-menu-item-disabled"),t.removeAttribute("title")):(t.classList.add("trimblemaps-cp-menu-item-disabled"),t.setAttribute("title","Does not display until zoom level ".concat(a)))}))},e.prototype._setServiceUrls=function(e){var t=this;Object.keys(this._urls).forEach((function(a){void 0!==e[a]&&(t._urls[a]=e[a])}))},e.prototype.setCPLayerVisibility=function(e){var t=this;if(null!==this._map)return this._customPlacesLayerInstance?this._customPlacesLayerInstance.setVisibility(e):(this._customPlacesLayerInstance=new l(this._map,{layerId:"privateplaces",isVisible:this._options.isVisible}),this._map.style._loaded?this._customPlacesLayerInstance.addTo(this._map):this._map.once("style.load",(function(){t._customPlacesLayerInstance.addTo(t._map)}))),this._customPlacesLayerInstance.isVisible();console.warn("This control must be added to a map before content layer visibility can be set.")},e.prototype.getCPSets=function(){var e=this,t=this._customPlacesResponse.filter((function(t){return e._selectedCPSets.includes(t.setID)})).map((function(e){return e.name}));return{cpSetIDs:this._selectedCPSets.length?this._selectedCPSets:[],cpSetNames:t}},e.prototype.CustomPlaceClickControl=function(){return this._customPlacesClickControl=new m,this._customPlacesClickControl},e}()}));
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("@trimblemaps/trimblemaps-js")):"function"==typeof define&&define.amd?define(["@trimblemaps/trimblemaps-js"],t):((e="undefined"!=typeof globalThis?globalThis:e||self).TrimbleMapsControl=e.TrimbleMapsControl||{},e.TrimbleMapsControl.CustomPlaces=t(e.TrimbleMaps))}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var s=t(e),a=function(e,t){return a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var s in t)Object.prototype.hasOwnProperty.call(t,s)&&(e[s]=t[s])},a(e,t)};function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function s(){this.constructor=e}a(e,t),e.prototype=null===t?Object.create(t):(s.prototype=t.prototype,new s)}function n(e,t,s){if(s||2===arguments.length)for(var a,i=0,n=t.length;i<n;i++)!a&&i in t||(a||(a=Array.prototype.slice.call(t,0,i)),a[i]=t[i]);return e.concat(a||Array.prototype.slice.call(t))}"function"==typeof SuppressedError&&SuppressedError;var r={STYLE_URL:"https://tiles.alk.com/styles/",BASE_URL:"https://tiles.alk.com/api/PrivatePlaces/"};function o(e){for(var t=[],s=1;s<arguments.length;s++)t[s-1]=arguments[s];for(var a=0,i=t;a<i.length;a++){var n=i[a];for(var r in n)e[r]=n[r]}return e}var c={layerId:"privateplaces",isVisible:!0},l=function(e){function t(t,s){var a=this,i=o({},c,s);return(a=e.call(this,i)||this)._urls=r,a._layerNames=[],a._map=t,a._enabledTypes=new Map,a}return i(t,e),t.prototype._getContent=function(){var e=this,t=s.default.TIDToken,a=t.tidToken,i=t.externalAccountId,n=s.default.APIToken?s.default.APIToken.includes("token")?s.default.APIToken:"token=".concat(s.default.APIToken):void 0,r={headers:{"Content-Type":"application/json"}};a&&(r.headers.tidtoken="".concat(a)),i&&(r.headers.extacctid="".concat(i)),a||(r.headers.Authorization=n?"".concat(n):s.default.APIKey);var o="".concat(this._urls.STYLE_URL,"v5/").concat(this._map.getRegion(),"/").concat(this._map.getStyleName(),"/").concat(this._options.layerId);this._layerNames=[],fetch(o,r).then((function(t){return e._map.fire("customplacesloading"),t.json()})).then((function(t){if(t.sources){for(var s in t.sources)e._map.getSource(s)||e._map.addSource(s,t.sources[s]);t.layers.length&&(t.layers.forEach((function(t){var s="".concat(e._options.layerId,"-").concat(t.id);e._layerNames.push(s),t.id=s;var a="places_point_basic";void 0!==t.metadata&&void 0!==t.metadata.beforeLayer&&(a=t.metadata.beforeLayer),e._map.getLayer(a)?e._map.addLayer(t,a):e._map.addLayer(t)})),e.setVisibility(e._options.isVisible)),e._map.fire("customplaces")}else console.warn(null==t?void 0:t.name)}))},t.prototype.frameSet=function(e){var t,s,a,i;if(this._cpSourceData.length){var n=this._cpSourceData.filter((function(t){return t.properties.place_set_id===e.toString()}));if(n&&n.length){var r=n.length-1;this._map.fitBounds([[null===(t=n[r])||void 0===t?void 0:t.geometry.coordinates[0],null===(s=n[r])||void 0===s?void 0:s.geometry.coordinates[1]],[null===(a=n[r])||void 0===a?void 0:a.geometry.coordinates[0],null===(i=n[r])||void 0===i?void 0:i.geometry.coordinates[1]]],{padding:20,maxZoom:16})}}return this},t.prototype._getEnabledTypes=function(){var e=[];return this._cpSetFilter.forEach((function(t){t&&e.push(t.toString())})),e},t.prototype._filterFeatures=function(){var e=this._getEnabledTypes(),t=this._getBaseFilter();t.push(n(["in","place_set_id"],e,!0)),this._map.getLayer("privateplaces-privateplaces_all")&&(this._map.setFilter("privateplaces-privateplaces_sites",t),this._map.setFilter("privateplaces-privateplaces_all",t),this._map.setFilter("privateplaces-privateplaces_gates",t))},t.prototype._getBaseFilter=function(){return["all"]},t.prototype._getFilter=function(){var e=[];return(this._options.isVisible?this._selectElements:this._filterObjects).forEach((function(t){var s=t.id,a=t.value||t.default,i=[];"All"!==a&&(i.push("=="),i.push(s),i.push(a),e.push(i))})),e},t.prototype.setSelectedSets=function(e){this._cpSetFilter=e,this._filterFeatures()},t.prototype._refreshCPList=function(){var e,t=this,s=this._map.querySourceFeatures("PrivatePlaces",{sourceLayer:"places"}),a=this._map.querySourceFeatures("PrivatePlaces",{sourceLayer:"sites"}),i=this._map.querySourceFeatures("PrivatePlaces",{sourceLayer:"gates"}),n=s.concat(a,i);this._visibleTypes=n.map((function(e){return e.properties.place_set_id})).filter((function(e,t,s){return t===s.indexOf(e)})),this._visibleTypes.forEach((function(e){t._enabledTypes.has(e)||t._enabledTypes.set(e,!0)}));var r=document.getElementById("custom_places_ul"),o=null==r?void 0:r.getElementsByTagName("li");(null===(e=this._visibleTypes)||void 0===e?void 0:e.length)>0&&o?Array.from(o).map((function(e){e.classList.remove("trimblemaps-cp-list-disabled"),-1===t._visibleTypes.indexOf(e.getElementsByTagName("input")[0].getAttribute("data-cp-id").toString())&&(e.classList.contains("trimblemaps-cp-list-disabled")||e.classList.add("trimblemaps-cp-list-disabled"))})):o&&Array.from(o).map((function(e){e.classList.contains("trimblemaps-cp-list-disabled")||e.classList.add("trimblemaps-cp-list-disabled")})),this._cpSourceData=n},t}(e.ContentBase),p=function(){function e(){this.mapHandlers=new Map}return e.prototype.setMap=function(e){this.map=e},e.prototype.add=function(e){if(this.map){this.map.on(e.eventName,e.listener);var t=e.eventName+Date.now();return this.mapHandlers.set(t,e),t}console.warn("Handler cannot be added. The map has not been set for this manager.")},e.prototype.remove=function(e){var t=this.mapHandlers.get(e);this.map.off(t.eventName,t.listener),this.mapHandlers.delete(e)},e.prototype.removeAll=function(){var e=this;this.mapHandlers.forEach((function(t){e.map.off(t.eventName,t.listener)})),this.mapHandlers.clear()},e}(),m=function(t){function s(s){var a=this,i=o({layerId:"privateplaces",clickLayerIds:["privateplaces-privateplaces_all"]},s);return a=t.call(this,i)||this,e.Places.authenticate().then((function(e){if(e){a._token=JSON.parse(e).token;var t=document.getElementsByClassName("trimblemaps-ctrl");t&&Array.from(t).map((function(e){0===e.childNodes.length&&e.remove()}))}else console.error("places authentication failed. kindly verify the API key or token is valid.")}),(function(e){console.error(e)})),a}return i(s,t),s.prototype._onClick=function(t){var s=this,a=t.features;if(a&&a.length>0){if(a[0].properties&&a[0].properties.tpid){var i=a[0].properties.tpid;e.Places.getPlaceDetails({token:this._token,placeId:i}).then((function(t){var a=JSON.parse(t),i=document.createElement("div");i.className="trimblemaps-ctrl-plpopup",i.innerHTML='\n <h4>Location Details</h4>\n <div class="trimblemaps-custom-place-details-container">\n <div class="trimblemaps-custom-place-row">\n <div class="trimblemaps-custom-place-key">Name:</div>\n <div class="trimblemaps-custom-place-value">'.concat(a.name,"</div>\n </div>\n ").concat(s._formatAddress(a.formattedAddress),"\n ").concat(s._formatPhone(a.contactInfo.phone),"\n ").concat(s._formatUrl(a.contactInfo.url),"\n ").concat(s._formatOperatingHours(a.operatingHours),"\n ").concat(s._formatCatName(a.categoryName),"\n </div>"),s._popup&&s._popup.remove(),s._popup=new e.Popup({offset:20,maxWidth:"380px",closeButton:!1}).setLngLat(a.geometry.coordinates).setDOMContent(i).addTo(s._map)}),(function(e){console.error(e)}))}else{var n=document.createElement("div");n.className="trimblemaps-ctrl-trpopup",n.innerHTML="Details does not exist for this place.",this._popup&&this._popup.remove(),this._popup=new e.Popup({}).setLngLat(t.lngLat).setDOMContent(n).addTo(this._map)}t.preventDefault()}},s.prototype._formatOperatingHours=function(e){if(!e)return"";var t=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"].map((function(t){return"<div>".concat(e[t].formattedText,"</div>")})).join("");return'\n <div class="trimblemaps-custom-place-row trimblemaps-custom-place-accordion">\n <input type="checkbox" id="hours-toggle"/>\n <label class="trimblemaps-custom-place-key" for="hours-toggle">\n <div class="trimblemaps-custom-place-icon trimblemaps-place-clock"></div>\n Hours:</label>\n <label class="trimblemaps-custom-place-value" for="hours-toggle">\n <div class="trimblemaps-custom-place-icon trimblemaps-ctrl-icon-chevron-right"></div>\n <div class="trimblemaps-custom-place-hours-container trimblemaps-custom-place-accordion-content-shrink">'.concat(t,"</div>\n </label>\n </div>")},s.prototype._formatCatName=function(e){return e?'\n <div class="trimblemaps-custom-place-row">\n <div class="trimblemaps-custom-place-key">Category:</div>\n <div class="trimblemaps-custom-place-value">'.concat(e,"</div>\n </div>"):""},s.prototype._formatAddress=function(e){return e?'\n <div class="trimblemaps-custom-place-row">\n <div class="trimblemaps-custom-place-key">\n <div class="trimblemaps-custom-place-icon trimblemaps-place-pin"></div>\n Address:\n </div>\n <div class="trimblemaps-custom-place-value">'.concat(e,"</div>\n </div>"):""},s.prototype._formatPhone=function(e){return e?'\n <div class="trimblemaps-custom-place-row">\n <div class="trimblemaps-custom-place-key">\n <div class="trimblemaps-custom-place-icon trimblemaps-place-phone"></div>\n Phone:\n </div>\n <div class="trimblemaps-custom-place-value">'.concat(e,"</div>\n </div>"):""},s.prototype._formatUrl=function(e){if(!e)return"";var t=e?'<a href="'.concat(e,'" target="_blank" rel="noopener">').concat(e,"</a>"):"";return'\n <div class="trimblemaps-custom-place-row">\n <div class="trimblemaps-custom-place-key">\n <div class="trimblemaps-custom-place-icon trimblemaps-place-globe"></div>\n Website:\n </div>\n <div class="trimblemaps-custom-place-value">'.concat(t,"</div>\n </div>")},s.prototype._onContentVisibility=function(e){var t=this;(this._options.clickLayerIds||[]).forEach((function(s){s.startsWith(e.id)&&("visible"!==t._map.getLayoutProperty(s,"visibility")&&t._popup&&t._popup.isOpen()&&t._popup.remove())}))},s}(e.ClickControlBase),d={layerId:"privateplaces",isVisible:!0,showAll:!0,selectedIds:[]};return function(){function e(e){var t=this;this._mapHandlerManager=new p,this._cpSetIds=[],this._selectedCPSets=[],this._customPlacesResponse=[],this._mapBasedContentLayers=["building3d","places"],this._urls=r,this._options=o({},d,e),this._outsideClickListener=function(e){var s;t._container.contains(e.target)||null===(s=t._layerMenu)||void 0===s||s.classList.remove("trimblemaps-cp-menu-container-open")}}return e.prototype.onAdd=function(e){var t=this;this._map=e,this._mapHandlerManager.setMap(this._map),this._container=document.createElement("div"),this._container.className="trimblemaps-ctrl trimblemaps-ctrl-group trimblemaps-cp-menu-ctrl";var s=document.createElement("button");s.className="trimblemaps-ctrl-icon trimblemaps-cp-menu-layers-button",s.title="Custom Places",s.type="button",s.addEventListener("click",(function(){t._toggleLayerMenu()}));var a=document.createElement("div");a.className="trimblemaps-cp-menu-container";var i=document.createElement("div");i.className="trimblemaps-cp-menu-arrow",a.appendChild(i);var n=document.createElement("h5");n.className="trimblemaps-cp-menu-title";var r=document.createElement("div");return r.className="trimblemaps-cp-menu-list",this._layerMenu=a.cloneNode(!0),this._layerList=r.cloneNode(!0),n.innerHTML="Custom Place Sets",this._layerMenu.appendChild(n.cloneNode(!0)),this._layerMenu.appendChild(this._layerList),this._layerMenu.classList.add("trimblemaps-cp-menu-content-layers"),this._createCPContainer(),this._container.appendChild(s),this._container.appendChild(this._layerMenu),this._container.classList.add("trimblemaps-cp-menu-has-layers"),this._map.once("load",(function(){t._setLayerZoomState()})),this._map.on("idle",(function(){t._map.getSource("PrivatePlaces")&&t._map.isSourceLoaded("PrivatePlaces")&&t._customPlacesLayerInstance._refreshCPList()})),this._map.on("zoomend",(function(){t._setLayerZoomState()})),this._initializeLayer(),document.addEventListener("click",this._outsideClickListener),this._container},e.prototype._createCPContainer=function(){var e=this,t=document.createElement("div"),s=t.cloneNode(!0);s.className="trimblemaps-cp-controls trimblemaps-cp-d-flex trimblemaps-cp-flex-row trimblemaps-cp-mt-1";var a=document.createElement("span");a.className="trimblemaps-cp-mt-1 trimblemaps-cp-ml-1",a.innerHTML="Show:";var i=document.createElement("button");i.addEventListener("click",(function(){for(var t=document.querySelector("#custom_places_ul").querySelectorAll('input[type="checkbox"]'),s=0;s<t.length;s++)t[s].checked=!0;e._selectedCPSets=n([],e._cpSetIds,!0),e._customPlacesLayerInstance.setSelectedSets(e._selectedCPSets),e._map.fire("allcustomplacesvisibilitychange",{setIds:e._selectedCPSets,isSelected:!0})})),i.className="trimblemaps-cp-btn trimblemaps-cp-btn-sm trimblemaps-cp-ml-1 trimblemaps-cp-btn-outline-dark",i.innerHTML="All";var r=i.cloneNode(!0);r.innerHTML="None",r.className="trimblemaps-cp-btn trimblemaps-cp-btn-sm trimblemaps-cp-ml-1 trimblemaps-cp-btn-outline-dark trimblemaps-cp-mr-1",r.addEventListener("click",(function(){for(var t=document.querySelector("#custom_places_ul").querySelectorAll('input[type="checkbox"]'),s=0;s<t.length;s++)t[s].checked=!1;e._selectedCPSets=[],e._customPlacesLayerInstance.setSelectedSets(e._selectedCPSets),e._map.fire("allcustomplacesvisibilitychange",{setIds:e._cpSetIds,isSelected:!1})})),s.appendChild(a),s.appendChild(i),s.appendChild(r);var o=document.createElement("div");o.className="trimblemaps-cp-input-with-icon-left trimblemaps-cp-left-margin trimblemaps-cp-mr-2";var c=document.createElement("INPUT");c.className="trimblemaps-cp-form-control search-desktop",c.setAttribute("type","search"),c.setAttribute("data-search-input",""),c.setAttribute("autocorrect","off"),c.setAttribute("spellcheck","false"),c.setAttribute("autocapitalize","off"),c.setAttribute("aria-label","filter"),c.setAttribute("placeholder","Filter"),c.addEventListener("input",(function(t){e._filterCPList(t)}));var l=document.createElement("div");l.className="trimblemaps-cp-input-icon",l.innerHTML='<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="currentColor" class="mi-solid mi-filter" viewBox="0 0 24 24"><path d="M19.9 4.56c-.17-.34-.52-.56-.9-.56H5c-.38 0-.73.22-.9.56a.98.98 0 0 0 .11 1.05L10 12.76v7.23c0 .89 1.08 1.34 1.71.71l2-2a.99.99 0 0 0 .29-.71v-5.24l5.79-7.15c.23-.3.27-.71.11-1.05Z"/></svg>',o.appendChild(c),o.appendChild(l),s.appendChild(o),t.appendChild(s),this._cpSetList=t},e.prototype.onRemove=function(){this._map&&(document.removeEventListener("click",this._outsideClickListener),this._container.parentNode.removeChild(this._container),this._mapHandlerManager.removeAll(),this._customPlacesLayerInstance&&(this._customPlacesLayerInstance.remove(),this._customPlacesLayerInstance=void 0),this._map=void 0)},e.prototype._initializeLayer=function(){this.setCPLayerVisibility(),this.getCustomPlaces()},e.prototype._toggleLayerMenu=function(){var e;null===(e=this._layerMenu)||void 0===e||e.classList.toggle("trimblemaps-cp-menu-container-open")},e.prototype.getCustomPlaces=function(){var e=this,t=s.default.TIDToken,a=t.tidToken,i=t.externalAccountId,r="".concat(this._urls.BASE_URL,"GetPrivatePlaceSets.json"),o=s.default.APIToken?s.default.APIToken.includes("token")?s.default.APIToken:"token=".concat(s.default.APIToken):void 0,c={headers:{"Content-Type":"application/json"}};a&&(c.headers.tidtoken="".concat(a)),i&&(c.headers.extacctid="".concat(i)),a||(c.headers.Authorization=o?"".concat(o):s.default.APIKey),fetch(r,c).then((function(e){return e.json()})).then((function(t){if(t.length){e._customPlacesResponse=t;var s=document.createElement("ul");s.id="custom_places_ul",s.className="trimblemaps-cp-list-group trimblemaps-cp-list-group-condensed",e._cpSetIds=[],t.forEach((function(t){t.groupCount>0&&(s.appendChild(e._getCPSetItem(t)),e._cpSetIds.push(t.setID))})),e._selectedCPSets=e._options.showAll?n([],e._cpSetIds,!0):[],e._options.selectedIds&&e._options.selectedIds.length?(e._selectedCPSets=e._options.showAll?n([],e._options.selectedIds,!0):[],e._customPlacesLayerInstance.setSelectedSets(e._selectedCPSets)):e._options.showAll||e._customPlacesLayerInstance.setSelectedSets(e._selectedCPSets),e._cpSetList.appendChild(s),e._layerList.appendChild(e._cpSetList)}else{var a=document.createElement("span");a.className="trimblemaps-cp-ml-1",a.innerHTML='<p style="margin: 0.75rem; margin-top: unset; margin-bottom: 1rem;">Get access to Custom Place Sets by using Content Tools.</p>';var i=document.createElement("div");i.className="trimblemaps-cp-menu-divider",e._layerList.appendChild(i),e._layerList.appendChild(a)}})).catch((function(t){var s=document.createElement("span");s.className="trimblemaps-cp-ml-1",s.innerHTML='<p style="margin: 0.75rem; margin-top: unset; margin-bottom: 1rem;">Get access to Custom Place Sets by using Content Tools.</p>';var a=document.createElement("div");a.className="trimblemaps-cp-menu-divider",e._layerList.appendChild(a),e._layerList.appendChild(s),console.warn(t)}))},e.prototype._getCPSetItem=function(e){var t=this,s=document.createElement("li"),a=!this._options.selectedIds||!this._options.selectedIds.length||this._options.selectedIds.includes(e.setID);s.className="trimblemaps-cp-list-group-item list-item-leftright-control trimblemaps-cp-list-disabled";var i=document.createElement("div");i.className="trimblemaps-cp-custom-control trimblemaps-cp-custom-switch trimblemaps-cp-custom-control-inline",document.createElement("div").className="result-info text-ellipsis flex-element";var n=document.createElement("label");n.className="trimblemaps-cp-custom-control-label",n.setAttribute("for",e.setID);var r=document.createElement("INPUT");r.className="trimblemaps-cp-custom-control-input",r.setAttribute("type","checkbox"),a&&this._options.showAll&&r.setAttribute("checked","true"),r.setAttribute("id",e.setID),r.setAttribute("data-cp-id",e.setID),r.setAttribute("data-cp-name",e.name),r.addEventListener("change",(function(s){var a=s.target.checked;t._showHideCPLayer(e,a)})),i.appendChild(r),i.appendChild(n);var o=e.name,c=document.createElement("span");c.innerHTML=o,c.className="trimblemaps-cp-txt-no-wrap",c.setAttribute("title",o);var l=document.createElement("span");return l.className="trimblemaps-cp-left-margin trimblemaps-cp-badge trimblemaps-cp-badge-tertiary trimblemaps-cp-badge-pill",l.setAttribute("title",e.groupCount+" Custom Places"),l.innerHTML=e.groupCount,s.appendChild(i),s.appendChild(c),s.appendChild(l),s},e.prototype._showHideCPLayer=function(e,t){if(t)this._selectedCPSets.push(e.setID);else{var s=this._selectedCPSets.findIndex((function(t){return t===e.setID}));this._selectedCPSets.splice(s,1)}this._customPlacesLayerInstance.setSelectedSets(this._selectedCPSets),this._map.fire("customplacevisibilitychange",{setId:e.setID,isSelected:t})},e.prototype._filterCPList=function(e){for(var t=e.target.value.trim().toUpperCase(),s=document.getElementById("custom_places_ul").getElementsByTagName("li"),a=0;a<s.length;a++){s[a].getElementsByTagName("input")[0].getAttribute("data-cp-name").toUpperCase().indexOf(t)>-1?s[a].style.display="":s[a].style.display="none"}},e.prototype._setLayerZoomState=function(){var e=this;document.querySelectorAll(".trimblemaps-cp-menu-layer-item").forEach((function(t){var s=parseInt(t.getAttribute("data-layer-minzoom"));e._map.getZoom()>=s?(t.classList.remove("trimblemaps-cp-menu-item-disabled"),t.removeAttribute("title")):(t.classList.add("trimblemaps-cp-menu-item-disabled"),t.setAttribute("title","Does not display until zoom level ".concat(s)))}))},e.prototype._setServiceUrls=function(e){var t=this;Object.keys(this._urls).forEach((function(s){void 0!==e[s]&&(t._urls[s]=e[s])}))},e.prototype.setCPLayerVisibility=function(e){var t=this;if(null!==this._map)return this._customPlacesLayerInstance?this._customPlacesLayerInstance.setVisibility(e):(this._customPlacesLayerInstance=new l(this._map,{layerId:"privateplaces",isVisible:this._options.isVisible}),this._map.style._loaded?this._customPlacesLayerInstance.addTo(this._map):this._map.once("style.load",(function(){t._customPlacesLayerInstance.addTo(t._map)}))),this._customPlacesLayerInstance.isVisible();console.warn("This control must be added to a map before content layer visibility can be set.")},e.prototype.getCPSets=function(){var e=this,t=this._customPlacesResponse.filter((function(t){return e._selectedCPSets.includes(t.setID)})).map((function(e){return e.name}));return{cpSetIDs:this._selectedCPSets.length?this._selectedCPSets:[],cpSetNames:t}},e.prototype.CustomPlaceClickControl=function(){return this._customPlacesClickControl=new m,this._customPlacesClickControl},e.prototype.CustomPlacesLayer=function(){return new l(this._map,{layerId:"privateplaces",isVisible:this._options.isVisible})},e}()}));

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc