Skip to content

Instantly share code, notes, and snippets.

@theKashey
Last active March 16, 2019 22:58
Show Gist options
  • Save theKashey/3a49ad7ee8e73b7278fc168f9b9e7222 to your computer and use it in GitHub Desktop.
Save theKashey/3a49ad7ee8e73b7278fc168f9b9e7222 to your computer and use it in GitHub Desktop.
maps.js. Uses ymb/yms module system (https://github.com/yandex/ymb)
// code from https://api-maps.yandex.ru/2.1.73/map.js?callback=__jsonp_ymaps_map&mode=release&flags=
// see it live - https://yandex.com/maps/?ll=150.854710%2C-35.491643&z=7
// "import mapping"
["theme.browser.current", ".v", function (ym) {
var browser = ym.env.browser,
mapper = browser.eventMapper,
browserEngineLowerCase = browser.engine.toLowerCase(),
availableEngines = {
webkit: 'theme.browser.webkit',
// .....
gecko: 'theme.browser.gecko'
},
result = [
'util.extend',
'map.metaOptions',
'domEvent.override.common',
'mapEvent.override.common'
];
if (mapper == 'pointer') {
result.push('domEvent.managerOverrides.pointers', 'domEvent.multiPointer.override', 'domEvent.pointer.override');
} else {
result.push('domEvent.managerOverrides.touches', 'domEvent.multiTouch.override', 'domEvent.touch.override');
}
// Настройки по конкретным браузерам.
if (browserEngineLowerCase in availableEngines) {
result.push(availableEngines[browserEngineLowerCase]);
} else {
result.push('theme.browser.unknown');
}
return result;
}],
// another "mapping"
["theme.browser.webkit", ".C", function (ym) {
var isMobile = ym.env.browser.isMobile || ym.env.browser.isTablet;
var isWindowsYabro = ym.env.browser.name == 'YandexBrowser' &&
ym.env.browser.osFamily == 'Windows';
return [
isMobile || ym.env.browser.isSafari || isWindowsYabro ?
'layer.tileContainer.DomContainer' :
'layer.tileContainer.CanvasContainer'
];
}]
// this is more about polyfills
["graphics.render.detect.all", "5N", function (ym) {
var depends = [];
if (ym.supports.graphics.hasCanvas()) {
depends.push('graphics.render.canvas.support');
}
if (ym.supports.graphics.hasSvg()) {
depends.push('graphics.render.svg.support');
}
return depends;
}],
// This is more about IoT - this module would be injected into `layout` registry once someone will try to use it.
ym.modules.define({
name: "theme.islands.geoObject.layout.StretchyIcon", // module name
key: "islands#stretchyIcon", // key
storage: "layout", // "registry"
depends: ["util.dom.element", "util.dom.style", "util.dom.className", "util.math.areEqual", "templateLayoutFactory", "placemarkNew.layout.html", "Monitor", "shape.Polygon", "geometry.pixel.Polygon", "system.browser", "util.css", "util.string"],
declaration: function() {.....} // code
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment