|
@@ -16,25 +16,43 @@
|
|
var require;
|
|
var require;
|
|
|
|
|
|
require = function (require) {
|
|
require = function (require) {
|
|
- // To be able to use its path and attributes
|
|
|
|
- // to map other parts of Amber, this code must find its <script> tag.
|
|
|
|
- // It first looks for id 'amber-path-mapper'.
|
|
|
|
- // When loading amber.js asynchronously, you must include this id,
|
|
|
|
- // or the code can not reliably find its <script>.
|
|
|
|
- var me = document.getElementById("amber-path-mapper");
|
|
|
|
- if (!me || me.tagName.toLowerCase() !== "script") {
|
|
|
|
- // If <script> with 'amber-path-mapper' id is not present,
|
|
|
|
- // (this id is not necessary for inline <script> tag in HTML),
|
|
|
|
|
|
+ function uniquelyMapped(symbolicPath) {
|
|
|
|
+ if (require && typeof define !== "undefined" && define.amd) {
|
|
|
|
+ var mappedPath = require.toUrl(symbolicPath),
|
|
|
|
+ basePath = require.toUrl('') + symbolicPath;
|
|
|
|
+ if (resolveViaDOM(mappedPath) !== resolveViaDOM(basePath)) {
|
|
|
|
+ return mappedPath;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ function myTag() {
|
|
|
|
+ // To be able to use its path and attributes
|
|
|
|
+ // to map other parts of Amber, this code must find its path.
|
|
|
|
+ // It first looks if require is already present && 'amber' path mapped.
|
|
|
|
+ // It not, it looks for id 'amber-path-mapper'.
|
|
|
|
+ // When loading amber.js asynchronously, you must include this id,
|
|
|
|
+ // or the code can not reliably find its <script>.
|
|
|
|
+ // If neither 'amber' mapping, nor script#amber-path-mapper is present,
|
|
|
|
+ // (the id is not necessary for inline <script> tag in HTML),
|
|
// it uses the "find the last <script> tag present in the moment" method.
|
|
// it uses the "find the last <script> tag present in the moment" method.
|
|
|
|
+ var result = uniquelyMapped('amber/amber');
|
|
|
|
+ if (result) {
|
|
|
|
+ return {src: result, hasAttribute: function () { return false; }};
|
|
|
|
+ }
|
|
|
|
+ var me = document.getElementById("amber-path-mapper");
|
|
|
|
+ if (me && me.tagName.toLowerCase() === "script") {
|
|
|
|
+ return me;
|
|
|
|
+ }
|
|
var scripts = document.getElementsByTagName("script");
|
|
var scripts = document.getElementsByTagName("script");
|
|
- me = scripts[scripts.length - 1];
|
|
|
|
|
|
+ return scripts[scripts.length - 1];
|
|
}
|
|
}
|
|
|
|
+ var me = myTag();
|
|
var src = me.src;
|
|
var src = me.src;
|
|
// strip the last two elements from the URL
|
|
// strip the last two elements from the URL
|
|
// e.g. http://app.com/amber/support/amber.js -> http://app.com/amber
|
|
// e.g. http://app.com/amber/support/amber.js -> http://app.com/amber
|
|
var amber_home = resolveViaDOM(src).replace(/\/[^\/]+\/[^\/]+$/, "");
|
|
var amber_home = resolveViaDOM(src).replace(/\/[^\/]+\/[^\/]+$/, "");
|
|
// In case of nonstandard deployment, you can specify libraries placement directly ...
|
|
// In case of nonstandard deployment, you can specify libraries placement directly ...
|
|
- var library_home = me.hasAttribute('data-libs') && me.getAttribute('data-libs');
|
|
|
|
|
|
+ var library_home = uniquelyMapped('amber_lib') || me.hasAttribute('data-libs') && me.getAttribute('data-libs');
|
|
|
|
|
|
// ... otherwise, this heuristics is used:
|
|
// ... otherwise, this heuristics is used:
|
|
if (!library_home) {
|
|
if (!library_home) {
|