@microsoft/office-js
Version:
Office JavaScript APIs
1,235 lines (1,232 loc) • 487 kB
JavaScript
/* Outlook Android specific API library */
/* Version: 16.0.8112.1000 */
/*
Copyright (c) Microsoft Corporation. All rights reserved.
*/
/*
Your use of this file is governed by the Microsoft Services Agreement http://go.microsoft.com/fwlink/?LinkId=266419.
*/
var __extends = this && this.__extends || function (d, b) {
for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p];
function __() {
this.constructor = d
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __)
};
var OfficeExt;
(function (OfficeExt) {
var MicrosoftAjaxFactory = function () {
function MicrosoftAjaxFactory() { }
MicrosoftAjaxFactory.prototype.isMsAjaxLoaded = function () {
if (typeof Sys !== "undefined" && typeof Type !== "undefined" && Sys.StringBuilder && typeof Sys.StringBuilder === "function" && Type.registerNamespace && typeof Type.registerNamespace === "function" && Type.registerClass && typeof Type.registerClass === "function" && typeof Function._validateParams === "function" && Sys.Serialization && Sys.Serialization.JavaScriptSerializer && typeof Sys.Serialization.JavaScriptSerializer.serialize === "function")
return true;
else
return false
};
MicrosoftAjaxFactory.prototype.loadMsAjaxFull = function (callback) {
var msAjaxCDNPath = (window.location.protocol.toLowerCase() === "https:" ? "https:" : "http:") + "//ajax.aspnetcdn.com/ajax/3.5/MicrosoftAjax.js";
OSF.OUtil.loadScript(msAjaxCDNPath, callback)
};
Object.defineProperty(MicrosoftAjaxFactory.prototype, "msAjaxError", {
get: function () {
if (this._msAjaxError == null && this.isMsAjaxLoaded())
this._msAjaxError = Error;
return this._msAjaxError
},
set: function (errorClass) {
this._msAjaxError = errorClass
},
enumerable: true,
configurable: true
});
Object.defineProperty(MicrosoftAjaxFactory.prototype, "msAjaxString", {
get: function () {
if (this._msAjaxString == null && this.isMsAjaxLoaded())
this._msAjaxString = String;
return this._msAjaxString
},
set: function (stringClass) {
this._msAjaxString = stringClass
},
enumerable: true,
configurable: true
});
Object.defineProperty(MicrosoftAjaxFactory.prototype, "msAjaxDebug", {
get: function () {
if (this._msAjaxDebug == null && this.isMsAjaxLoaded())
this._msAjaxDebug = Sys.Debug;
return this._msAjaxDebug
},
set: function (debugClass) {
this._msAjaxDebug = debugClass
},
enumerable: true,
configurable: true
});
return MicrosoftAjaxFactory
}();
OfficeExt.MicrosoftAjaxFactory = MicrosoftAjaxFactory
})(OfficeExt || (OfficeExt = {}));
var OsfMsAjaxFactory = new OfficeExt.MicrosoftAjaxFactory;
var OSF = OSF || {};
var OfficeExt;
(function (OfficeExt) {
var SafeStorage = function () {
function SafeStorage(_internalStorage) {
this._internalStorage = _internalStorage
}
SafeStorage.prototype.getItem = function (key) {
try {
return this._internalStorage && this._internalStorage.getItem(key)
}
catch (e) {
return null
}
};
SafeStorage.prototype.setItem = function (key, data) {
try {
this._internalStorage && this._internalStorage.setItem(key, data)
}
catch (e) { }
};
SafeStorage.prototype.clear = function () {
try {
this._internalStorage && this._internalStorage.clear()
}
catch (e) { }
};
SafeStorage.prototype.removeItem = function (key) {
try {
this._internalStorage && this._internalStorage.removeItem(key)
}
catch (e) { }
};
SafeStorage.prototype.getKeysWithPrefix = function (keyPrefix) {
var keyList = [];
try {
var len = this._internalStorage && this._internalStorage.length || 0;
for (var i = 0; i < len; i++) {
var key = this._internalStorage.key(i);
if (key.indexOf(keyPrefix) === 0)
keyList.push(key)
}
}
catch (e) { }
return keyList
};
return SafeStorage
}();
OfficeExt.SafeStorage = SafeStorage
})(OfficeExt || (OfficeExt = {}));
OSF.XdmFieldName = {
ConversationUrl: "ConversationUrl",
AppId: "AppId"
};
OSF.WindowNameItemKeys = {
BaseFrameName: "baseFrameName",
HostInfo: "hostInfo",
XdmInfo: "xdmInfo",
SerializerVersion: "serializerVersion",
AppContext: "appContext"
};
OSF.OUtil = function () {
var _uniqueId = -1;
var _xdmInfoKey = "&_xdm_Info=";
var _serializerVersionKey = "&_serializer_version=";
var _xdmSessionKeyPrefix = "_xdm_";
var _serializerVersionKeyPrefix = "_serializer_version=";
var _fragmentSeparator = "#";
var _fragmentInfoDelimiter = "&";
var _classN = "class";
var _loadedScripts = {};
var _defaultScriptLoadingTimeout = 3e4;
var _safeSessionStorage = null;
var _safeLocalStorage = null;
var _rndentropy = (new Date).getTime();
function _random() {
var nextrand = 2147483647 * Math.random();
nextrand ^= _rndentropy ^ (new Date).getMilliseconds() << Math.floor(Math.random() * (31 - 10));
return nextrand.toString(16)
}
function _getSessionStorage() {
if (!_safeSessionStorage) {
try {
var sessionStorage = window.sessionStorage
}
catch (ex) {
sessionStorage = null
}
_safeSessionStorage = new OfficeExt.SafeStorage(sessionStorage)
}
return _safeSessionStorage
}
function _reOrderTabbableElements(elements) {
var bucket0 = [];
var bucketPositive = [];
var i;
var len = elements.length;
var ele;
for (i = 0; i < len; i++) {
ele = elements[i];
if (ele.tabIndex) {
if (ele.tabIndex > 0)
bucketPositive.push(ele);
else if (ele.tabIndex === 0)
bucket0.push(ele)
}
else
bucket0.push(ele)
}
bucketPositive = bucketPositive.sort(function (left, right) {
var diff = left.tabIndex - right.tabIndex;
if (diff === 0)
diff = bucketPositive.indexOf(left) - bucketPositive.indexOf(right);
return diff
});
return [].concat(bucketPositive, bucket0)
}
return {
set_entropy: function OSF_OUtil$set_entropy(entropy) {
if (typeof entropy == "string")
for (var i = 0; i < entropy.length; i += 4) {
var temp = 0;
for (var j = 0; j < 4 && i + j < entropy.length; j++)
temp = (temp << 8) + entropy.charCodeAt(i + j);
_rndentropy ^= temp
}
else if (typeof entropy == "number")
_rndentropy ^= entropy;
else
_rndentropy ^= 2147483647 * Math.random();
_rndentropy &= 2147483647
},
extend: function OSF_OUtil$extend(child, parent) {
var F = function () { };
F.prototype = parent.prototype;
child.prototype = new F;
child.prototype.constructor = child;
child.uber = parent.prototype;
if (parent.prototype.constructor === Object.prototype.constructor)
parent.prototype.constructor = parent
},
setNamespace: function OSF_OUtil$setNamespace(name, parent) {
if (parent && name && !parent[name])
parent[name] = {}
},
unsetNamespace: function OSF_OUtil$unsetNamespace(name, parent) {
if (parent && name && parent[name])
delete parent[name]
},
loadScript: function OSF_OUtil$loadScript(url, callback, timeoutInMs) {
if (url && callback) {
var doc = window.document;
var _loadedScriptEntry = _loadedScripts[url];
if (!_loadedScriptEntry) {
var script = doc.createElement("script");
script.type = "text/javascript";
_loadedScriptEntry = {
loaded: false,
pendingCallbacks: [callback],
timer: null
};
_loadedScripts[url] = _loadedScriptEntry;
var onLoadCallback = function OSF_OUtil_loadScript$onLoadCallback() {
if (_loadedScriptEntry.timer != null) {
clearTimeout(_loadedScriptEntry.timer);
delete _loadedScriptEntry.timer
}
_loadedScriptEntry.loaded = true;
var pendingCallbackCount = _loadedScriptEntry.pendingCallbacks.length;
for (var i = 0; i < pendingCallbackCount; i++) {
var currentCallback = _loadedScriptEntry.pendingCallbacks.shift();
currentCallback()
}
};
var onLoadError = function OSF_OUtil_loadScript$onLoadError() {
delete _loadedScripts[url];
if (_loadedScriptEntry.timer != null) {
clearTimeout(_loadedScriptEntry.timer);
delete _loadedScriptEntry.timer
}
var pendingCallbackCount = _loadedScriptEntry.pendingCallbacks.length;
for (var i = 0; i < pendingCallbackCount; i++) {
var currentCallback = _loadedScriptEntry.pendingCallbacks.shift();
currentCallback()
}
};
if (script.readyState)
script.onreadystatechange = function () {
if (script.readyState == "loaded" || script.readyState == "complete") {
script.onreadystatechange = null;
onLoadCallback()
}
};
else
script.onload = onLoadCallback;
script.onerror = onLoadError;
timeoutInMs = timeoutInMs || _defaultScriptLoadingTimeout;
_loadedScriptEntry.timer = setTimeout(onLoadError, timeoutInMs);
script.setAttribute("crossOrigin", "anonymous");
script.src = url;
doc.getElementsByTagName("head")[0].appendChild(script)
}
else if (_loadedScriptEntry.loaded)
callback();
else
_loadedScriptEntry.pendingCallbacks.push(callback)
}
},
loadCSS: function OSF_OUtil$loadCSS(url) {
if (url) {
var doc = window.document;
var link = doc.createElement("link");
link.type = "text/css";
link.rel = "stylesheet";
link.href = url;
doc.getElementsByTagName("head")[0].appendChild(link)
}
},
parseEnum: function OSF_OUtil$parseEnum(str, enumObject) {
var parsed = enumObject[str.trim()];
if (typeof parsed == "undefined") {
OsfMsAjaxFactory.msAjaxDebug.trace("invalid enumeration string:" + str);
throw OsfMsAjaxFactory.msAjaxError.argument("str");
}
return parsed
},
delayExecutionAndCache: function OSF_OUtil$delayExecutionAndCache() {
var obj = { calc: arguments[0] };
return function () {
if (obj.calc) {
obj.val = obj.calc.apply(this, arguments);
delete obj.calc
}
return obj.val
}
},
getUniqueId: function OSF_OUtil$getUniqueId() {
_uniqueId = _uniqueId + 1;
return _uniqueId.toString()
},
formatString: function OSF_OUtil$formatString() {
var args = arguments;
var source = args[0];
return source.replace(/{(\d+)}/gm, function (match, number) {
var index = parseInt(number, 10) + 1;
return args[index] === undefined ? "{" + number + "}" : args[index]
})
},
generateConversationId: function OSF_OUtil$generateConversationId() {
return [_random(), _random(), (new Date).getTime().toString()].join("_")
},
getFrameName: function OSF_OUtil$getFrameName(cacheKey) {
return _xdmSessionKeyPrefix + cacheKey + this.generateConversationId()
},
addXdmInfoAsHash: function OSF_OUtil$addXdmInfoAsHash(url, xdmInfoValue) {
return OSF.OUtil.addInfoAsHash(url, _xdmInfoKey, xdmInfoValue, false)
},
addSerializerVersionAsHash: function OSF_OUtil$addSerializerVersionAsHash(url, serializerVersion) {
return OSF.OUtil.addInfoAsHash(url, _serializerVersionKey, serializerVersion, true)
},
addInfoAsHash: function OSF_OUtil$addInfoAsHash(url, keyName, infoValue, encodeInfo) {
url = url.trim() || "";
var urlParts = url.split(_fragmentSeparator);
var urlWithoutFragment = urlParts.shift();
var fragment = urlParts.join(_fragmentSeparator);
var newFragment;
if (encodeInfo)
newFragment = [keyName, encodeURIComponent(infoValue), fragment].join("");
else
newFragment = [fragment, keyName, infoValue].join("");
return [urlWithoutFragment, _fragmentSeparator, newFragment].join("")
},
parseHostInfoFromWindowName: function OSF_OUtil$parseHostInfoFromWindowName(skipSessionStorage, windowName) {
return OSF.OUtil.parseInfoFromWindowName(skipSessionStorage, windowName, OSF.WindowNameItemKeys.HostInfo)
},
parseXdmInfo: function OSF_OUtil$parseXdmInfo(skipSessionStorage) {
var xdmInfoValue = OSF.OUtil.parseXdmInfoWithGivenFragment(skipSessionStorage, window.location.hash);
if (!xdmInfoValue)
xdmInfoValue = OSF.OUtil.parseXdmInfoFromWindowName(skipSessionStorage, window.name);
return xdmInfoValue
},
parseXdmInfoFromWindowName: function OSF_OUtil$parseXdmInfoFromWindowName(skipSessionStorage, windowName) {
return OSF.OUtil.parseInfoFromWindowName(skipSessionStorage, windowName, OSF.WindowNameItemKeys.XdmInfo)
},
parseXdmInfoWithGivenFragment: function OSF_OUtil$parseXdmInfoWithGivenFragment(skipSessionStorage, fragment) {
return OSF.OUtil.parseInfoWithGivenFragment(_xdmInfoKey, _xdmSessionKeyPrefix, false, skipSessionStorage, fragment)
},
parseSerializerVersion: function OSF_OUtil$parseSerializerVersion(skipSessionStorage) {
var serializerVersion = OSF.OUtil.parseSerializerVersionWithGivenFragment(skipSessionStorage, window.location.hash);
if (isNaN(serializerVersion))
serializerVersion = OSF.OUtil.parseSerializerVersionFromWindowName(skipSessionStorage, window.name);
return serializerVersion
},
parseSerializerVersionFromWindowName: function OSF_OUtil$parseSerializerVersionFromWindowName(skipSessionStorage, windowName) {
return parseInt(OSF.OUtil.parseInfoFromWindowName(skipSessionStorage, windowName, OSF.WindowNameItemKeys.SerializerVersion))
},
parseSerializerVersionWithGivenFragment: function OSF_OUtil$parseSerializerVersionWithGivenFragment(skipSessionStorage, fragment) {
return parseInt(OSF.OUtil.parseInfoWithGivenFragment(_serializerVersionKey, _serializerVersionKeyPrefix, true, skipSessionStorage, fragment))
},
parseInfoFromWindowName: function OSF_OUtil$parseInfoFromWindowName(skipSessionStorage, windowName, infoKey) {
try {
var windowNameObj = JSON.parse(windowName);
var infoValue = windowNameObj != null ? windowNameObj[infoKey] : null;
var osfSessionStorage = _getSessionStorage();
if (!skipSessionStorage && osfSessionStorage && windowNameObj != null) {
var sessionKey = windowNameObj[OSF.WindowNameItemKeys.BaseFrameName] + infoKey;
if (infoValue)
osfSessionStorage.setItem(sessionKey, infoValue);
else
infoValue = osfSessionStorage.getItem(sessionKey)
}
return infoValue
}
catch (Exception) {
return null
}
},
parseInfoWithGivenFragment: function OSF_OUtil$parseInfoWithGivenFragment(infoKey, infoKeyPrefix, decodeInfo, skipSessionStorage, fragment) {
var fragmentParts = fragment.split(infoKey);
var infoValue = fragmentParts.length > 1 ? fragmentParts[fragmentParts.length - 1] : null;
if (decodeInfo && infoValue != null) {
if (infoValue.indexOf(_fragmentInfoDelimiter) >= 0)
infoValue = infoValue.split(_fragmentInfoDelimiter)[0];
infoValue = decodeURIComponent(infoValue)
}
var osfSessionStorage = _getSessionStorage();
if (!skipSessionStorage && osfSessionStorage) {
var sessionKeyStart = window.name.indexOf(infoKeyPrefix);
if (sessionKeyStart > -1) {
var sessionKeyEnd = window.name.indexOf(";", sessionKeyStart);
if (sessionKeyEnd == -1)
sessionKeyEnd = window.name.length;
var sessionKey = window.name.substring(sessionKeyStart, sessionKeyEnd);
if (infoValue)
osfSessionStorage.setItem(sessionKey, infoValue);
else
infoValue = osfSessionStorage.getItem(sessionKey)
}
}
return infoValue
},
getConversationId: function OSF_OUtil$getConversationId() {
var searchString = window.location.search;
var conversationId = null;
if (searchString) {
var index = searchString.indexOf("&");
conversationId = index > 0 ? searchString.substring(1, index) : searchString.substr(1);
if (conversationId && conversationId.charAt(conversationId.length - 1) === "=") {
conversationId = conversationId.substring(0, conversationId.length - 1);
if (conversationId)
conversationId = decodeURIComponent(conversationId)
}
}
return conversationId
},
getInfoItems: function OSF_OUtil$getInfoItems(strInfo) {
var items = strInfo.split("$");
if (typeof items[1] == "undefined")
items = strInfo.split("|");
if (typeof items[1] == "undefined")
items = strInfo.split("%7C");
return items
},
getXdmFieldValue: function OSF_OUtil$getXdmFieldValue(xdmFieldName, skipSessionStorage) {
var fieldValue = "";
var xdmInfoValue = OSF.OUtil.parseXdmInfo(skipSessionStorage);
if (xdmInfoValue) {
var items = OSF.OUtil.getInfoItems(xdmInfoValue);
if (items != undefined && items.length >= 3)
switch (xdmFieldName) {
case OSF.XdmFieldName.ConversationUrl:
fieldValue = items[2];
break;
case OSF.XdmFieldName.AppId:
fieldValue = items[1];
break
}
}
return fieldValue
},
validateParamObject: function OSF_OUtil$validateParamObject(params, expectedProperties, callback) {
var e = Function._validateParams(arguments, [{
name: "params",
type: Object,
mayBeNull: false
}, {
name: "expectedProperties",
type: Object,
mayBeNull: false
}, {
name: "callback",
type: Function,
mayBeNull: true
}]);
if (e)
throw e;
for (var p in expectedProperties) {
e = Function._validateParameter(params[p], expectedProperties[p], p);
if (e)
throw e;
}
},
writeProfilerMark: function OSF_OUtil$writeProfilerMark(text) {
if (window.msWriteProfilerMark) {
window.msWriteProfilerMark(text);
OsfMsAjaxFactory.msAjaxDebug.trace(text)
}
},
outputDebug: function OSF_OUtil$outputDebug(text) {
if (typeof OsfMsAjaxFactory !== "undefined" && OsfMsAjaxFactory.msAjaxDebug && OsfMsAjaxFactory.msAjaxDebug.trace)
OsfMsAjaxFactory.msAjaxDebug.trace(text)
},
defineNondefaultProperty: function OSF_OUtil$defineNondefaultProperty(obj, prop, descriptor, attributes) {
descriptor = descriptor || {};
for (var nd in attributes) {
var attribute = attributes[nd];
if (descriptor[attribute] == undefined)
descriptor[attribute] = true
}
Object.defineProperty(obj, prop, descriptor);
return obj
},
defineNondefaultProperties: function OSF_OUtil$defineNondefaultProperties(obj, descriptors, attributes) {
descriptors = descriptors || {};
for (var prop in descriptors)
OSF.OUtil.defineNondefaultProperty(obj, prop, descriptors[prop], attributes);
return obj
},
defineEnumerableProperty: function OSF_OUtil$defineEnumerableProperty(obj, prop, descriptor) {
return OSF.OUtil.defineNondefaultProperty(obj, prop, descriptor, ["enumerable"])
},
defineEnumerableProperties: function OSF_OUtil$defineEnumerableProperties(obj, descriptors) {
return OSF.OUtil.defineNondefaultProperties(obj, descriptors, ["enumerable"])
},
defineMutableProperty: function OSF_OUtil$defineMutableProperty(obj, prop, descriptor) {
return OSF.OUtil.defineNondefaultProperty(obj, prop, descriptor, ["writable", "enumerable", "configurable"])
},
defineMutableProperties: function OSF_OUtil$defineMutableProperties(obj, descriptors) {
return OSF.OUtil.defineNondefaultProperties(obj, descriptors, ["writable", "enumerable", "configurable"])
},
finalizeProperties: function OSF_OUtil$finalizeProperties(obj, descriptor) {
descriptor = descriptor || {};
var props = Object.getOwnPropertyNames(obj);
var propsLength = props.length;
for (var i = 0; i < propsLength; i++) {
var prop = props[i];
var desc = Object.getOwnPropertyDescriptor(obj, prop);
if (!desc.get && !desc.set)
desc.writable = descriptor.writable || false;
desc.configurable = descriptor.configurable || false;
desc.enumerable = descriptor.enumerable || true;
Object.defineProperty(obj, prop, desc)
}
return obj
},
mapList: function OSF_OUtil$MapList(list, mapFunction) {
var ret = [];
if (list)
for (var item in list)
ret.push(mapFunction(list[item]));
return ret
},
listContainsKey: function OSF_OUtil$listContainsKey(list, key) {
for (var item in list)
if (key == item)
return true;
return false
},
listContainsValue: function OSF_OUtil$listContainsElement(list, value) {
for (var item in list)
if (value == list[item])
return true;
return false
},
augmentList: function OSF_OUtil$augmentList(list, addenda) {
var add = list.push ? function (key, value) {
list.push(value)
} : function (key, value) {
list[key] = value
};
for (var key in addenda)
add(key, addenda[key])
},
redefineList: function OSF_Outil$redefineList(oldList, newList) {
for (var key1 in oldList)
delete oldList[key1];
for (var key2 in newList)
oldList[key2] = newList[key2]
},
isArray: function OSF_OUtil$isArray(obj) {
return Object.prototype.toString.apply(obj) === "[object Array]"
},
isFunction: function OSF_OUtil$isFunction(obj) {
return Object.prototype.toString.apply(obj) === "[object Function]"
},
isDate: function OSF_OUtil$isDate(obj) {
return Object.prototype.toString.apply(obj) === "[object Date]"
},
addEventListener: function OSF_OUtil$addEventListener(element, eventName, listener) {
if (element.addEventListener)
element.addEventListener(eventName, listener, false);
else if (Sys.Browser.agent === Sys.Browser.InternetExplorer && element.attachEvent)
element.attachEvent("on" + eventName, listener);
else
element["on" + eventName] = listener
},
removeEventListener: function OSF_OUtil$removeEventListener(element, eventName, listener) {
if (element.removeEventListener)
element.removeEventListener(eventName, listener, false);
else if (Sys.Browser.agent === Sys.Browser.InternetExplorer && element.detachEvent)
element.detachEvent("on" + eventName, listener);
else
element["on" + eventName] = null
},
getCookieValue: function OSF_OUtil$getCookieValue(cookieName) {
var tmpCookieString = RegExp(cookieName + "[^;]+").exec(document.cookie);
return tmpCookieString.toString().replace(/^[^=]+./, "")
},
xhrGet: function OSF_OUtil$xhrGet(url, onSuccess, onError) {
var xmlhttp;
try {
xmlhttp = new XMLHttpRequest;
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4)
if (xmlhttp.status == 200)
onSuccess(xmlhttp.responseText);
else
onError(xmlhttp.status)
};
xmlhttp.open("GET", url, true);
xmlhttp.send()
}
catch (ex) {
onError(ex)
}
},
xhrGetFull: function OSF_OUtil$xhrGetFull(url, oneDriveFileName, onSuccess, onError) {
var xmlhttp;
var requestedFileName = oneDriveFileName;
try {
xmlhttp = new XMLHttpRequest;
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4)
if (xmlhttp.status == 200)
onSuccess(xmlhttp, requestedFileName);
else
onError(xmlhttp.status)
};
xmlhttp.open("GET", url, true);
xmlhttp.send()
}
catch (ex) {
onError(ex)
}
},
encodeBase64: function OSF_Outil$encodeBase64(input) {
if (!input)
return input;
var codex = "ABCDEFGHIJKLMNOP" + "QRSTUVWXYZabcdef" + "ghijklmnopqrstuv" + "wxyz0123456789+/=";
var output = [];
var temp = [];
var index = 0;
var c1,
c2,
c3,
a,
b,
c;
var i;
var length = input.length;
do {
c1 = input.charCodeAt(index++);
c2 = input.charCodeAt(index++);
c3 = input.charCodeAt(index++);
i = 0;
a = c1 & 255;
b = c1 >> 8;
c = c2 & 255;
temp[i++] = a >> 2;
temp[i++] = (a & 3) << 4 | b >> 4;
temp[i++] = (b & 15) << 2 | c >> 6;
temp[i++] = c & 63;
if (!isNaN(c2)) {
a = c2 >> 8;
b = c3 & 255;
c = c3 >> 8;
temp[i++] = a >> 2;
temp[i++] = (a & 3) << 4 | b >> 4;
temp[i++] = (b & 15) << 2 | c >> 6;
temp[i++] = c & 63
}
if (isNaN(c2))
temp[i - 1] = 64;
else if (isNaN(c3)) {
temp[i - 2] = 64;
temp[i - 1] = 64
}
for (var t = 0; t < i; t++)
output.push(codex.charAt(temp[t]))
} while (index < length);
return output.join("")
},
getSessionStorage: function OSF_Outil$getSessionStorage() {
return _getSessionStorage()
},
getLocalStorage: function OSF_Outil$getLocalStorage() {
if (!_safeLocalStorage) {
try {
var localStorage = window.localStorage
}
catch (ex) {
localStorage = null
}
_safeLocalStorage = new OfficeExt.SafeStorage(localStorage)
}
return _safeLocalStorage
},
convertIntToCssHexColor: function OSF_Outil$convertIntToCssHexColor(val) {
var hex = "#" + (Number(val) + 16777216).toString(16).slice(-6);
return hex
},
attachClickHandler: function OSF_Outil$attachClickHandler(element, handler) {
element.onclick = function (e) {
handler()
};
element.ontouchend = function (e) {
handler();
e.preventDefault()
}
},
getQueryStringParamValue: function OSF_Outil$getQueryStringParamValue(queryString, paramName) {
var e = Function._validateParams(arguments, [{
name: "queryString",
type: String,
mayBeNull: false
}, {
name: "paramName",
type: String,
mayBeNull: false
}]);
if (e) {
OsfMsAjaxFactory.msAjaxDebug.trace("OSF_Outil_getQueryStringParamValue: Parameters cannot be null.");
return ""
}
var queryExp = new RegExp("[\\?&]" + paramName + "=([^&#]*)", "i");
if (!queryExp.test(queryString)) {
OsfMsAjaxFactory.msAjaxDebug.trace("OSF_Outil_getQueryStringParamValue: The parameter is not found.");
return ""
}
return queryExp.exec(queryString)[1]
},
isiOS: function OSF_Outil$isiOS() {
return window.navigator.userAgent.match(/(iPad|iPhone|iPod)/g) ? true : false
},
isChrome: function OSF_Outil$isChrome() {
return window.navigator.userAgent.indexOf("Chrome") > 0 && !OSF.OUtil.isEdge()
},
isEdge: function OSF_Outil$isEdge() {
return window.navigator.userAgent.indexOf("Edge") > 0
},
isIE: function OSF_Outil$isIE() {
return window.navigator.userAgent.indexOf("Trident") > 0
},
isFirefox: function OSF_Outil$isFirefox() {
return window.navigator.userAgent.indexOf("Firefox") > 0
},
shallowCopy: function OSF_Outil$shallowCopy(sourceObj) {
if (sourceObj == null)
return null;
else if (!(sourceObj instanceof Object))
return sourceObj;
else if (Array.isArray(sourceObj)) {
var copyArr = [];
for (var i = 0; i < sourceObj.length; i++)
copyArr.push(sourceObj[i]);
return copyArr
}
else {
var copyObj = sourceObj.constructor();
for (var property in sourceObj)
if (sourceObj.hasOwnProperty(property))
copyObj[property] = sourceObj[property];
return copyObj
}
},
createObject: function OSF_Outil$createObject(properties) {
var obj = null;
if (properties) {
obj = {};
var len = properties.length;
for (var i = 0; i < len; i++)
obj[properties[i].name] = properties[i].value
}
return obj
},
addClass: function OSF_OUtil$addClass(elmt, val) {
if (!OSF.OUtil.hasClass(elmt, val)) {
var className = elmt.getAttribute(_classN);
if (className)
elmt.setAttribute(_classN, className + " " + val);
else
elmt.setAttribute(_classN, val)
}
},
hasClass: function OSF_OUtil$hasClass(elmt, clsName) {
var className = elmt.getAttribute(_classN);
return className && className.match(new RegExp("(\\s|^)" + clsName + "(\\s|$)"))
},
focusToFirstTabbable: function OSF_OUtil$focusToFirstTabbable(all, backward) {
var next;
var focused = false;
var candidate;
var setFlag = function (e) {
focused = true
};
var findNextPos = function (allLen, currPos, backward) {
if (currPos < 0 || currPos > allLen)
return -1;
else if (currPos === 0 && backward)
return -1;
else if (currPos === allLen - 1 && !backward)
return -1;
if (backward)
return currPos - 1;
else
return currPos + 1
};
all = _reOrderTabbableElements(all);
next = backward ? all.length - 1 : 0;
if (all.length === 0)
return null;
while (!focused && next >= 0 && next < all.length) {
candidate = all[next];
window.focus();
candidate.addEventListener("focus", setFlag);
candidate.focus();
candidate.removeEventListener("focus", setFlag);
next = findNextPos(all.length, next, backward);
if (!focused && candidate === document.activeElement)
focused = true
}
if (focused)
return candidate;
else
return null
},
focusToNextTabbable: function OSF_OUtil$focusToNextTabbable(all, curr, shift) {
var currPos;
var next;
var focused = false;
var candidate;
var setFlag = function (e) {
focused = true
};
var findCurrPos = function (all, curr) {
var i = 0;
for (; i < all.length; i++)
if (all[i] === curr)
return i;
return -1
};
var findNextPos = function (allLen, currPos, shift) {
if (currPos < 0 || currPos > allLen)
return -1;
else if (currPos === 0 && shift)
return -1;
else if (currPos === allLen - 1 && !shift)
return -1;
if (shift)
return currPos - 1;
else
return currPos + 1
};
all = _reOrderTabbableElements(all);
currPos = findCurrPos(all, curr);
next = findNextPos(all.length, currPos, shift);
if (next < 0)
return null;
while (!focused && next >= 0 && next < all.length) {
candidate = all[next];
candidate.addEventListener("focus", setFlag);
candidate.focus();
candidate.removeEventListener("focus", setFlag);
next = findNextPos(all.length, next, shift);
if (!focused && candidate === document.activeElement)
focused = true
}
if (focused)
return candidate;
else
return null
}
}
}();
OSF.OUtil.Guid = function () {
var hexCode = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"];
return {
generateNewGuid: function OSF_Outil_Guid$generateNewGuid() {
var result = "";
var tick = (new Date).getTime();
var index = 0;
for (; index < 32 && tick > 0; index++) {
if (index == 8 || index == 12 || index == 16 || index == 20)
result += "-";
result += hexCode[tick % 16];
tick = Math.floor(tick / 16)
}
for (; index < 32; index++) {
if (index == 8 || index == 12 || index == 16 || index == 20)
result += "-";
result += hexCode[Math.floor(Math.random() * 16)]
}
return result
}
}
}();
window.OSF = OSF;
OSF.OUtil.setNamespace("OSF", window);
OSF.AppName = {
Unsupported: 0,
Excel: 1,
Word: 2,
PowerPoint: 4,
Outlook: 8,
ExcelWebApp: 16,
WordWebApp: 32,
OutlookWebApp: 64,
Project: 128,
AccessWebApp: 256,
PowerpointWebApp: 512,
ExcelIOS: 1024,
Sway: 2048,
WordIOS: 4096,
PowerPointIOS: 8192,
Access: 16384,
Lync: 32768,
OutlookIOS: 65536,
OneNoteWebApp: 131072,
OneNote: 262144,
ExcelWinRT: 524288,
WordWinRT: 1048576,
PowerpointWinRT: 2097152,
OutlookAndroid: 4194304,
OneNoteWinRT: 8388608,
ExcelAndroid: 8388609,
VisioWebApp: 8388610
};
OSF.InternalPerfMarker = {
DataCoercionBegin: "Agave.HostCall.CoerceDataStart",
DataCoercionEnd: "Agave.HostCall.CoerceDataEnd"
};
OSF.HostCallPerfMarker = {
IssueCall: "Agave.HostCall.IssueCall",
ReceiveResponse: "Agave.HostCall.ReceiveResponse",
RuntimeExceptionRaised: "Agave.HostCall.RuntimeExecptionRaised"
};
OSF.AgaveHostAction = {
Select: 0,
UnSelect: 1,
CancelDialog: 2,
InsertAgave: 3,
CtrlF6In: 4,
CtrlF6Exit: 5,
CtrlF6ExitShift: 6,
SelectWithError: 7,
NotifyHostError: 8,
RefreshAddinCommands: 9,
PageIsReady: 10,
TabIn: 11,
TabInShift: 12,
TabExit: 13,
TabExitShift: 14,
EscExit: 15,
F2Exit: 16,
ExitNoFocusable: 17,
ExitNoFocusableShift: 18
};
OSF.SharedConstants = { NotificationConversationIdSuffix: "_ntf" };
OSF.DialogMessageType = {
DialogMessageReceived: 0,
DialogParentMessageReceived: 1,
DialogClosed: 12006
};
OSF.OfficeAppContext = function OSF_OfficeAppContext(id, appName, appVersion, appUILocale, dataLocale, docUrl, clientMode, settings, reason, osfControlType, eToken, correlationId, appInstanceId, touchEnabled, commerceAllowed, appMinorVersion, requirementMatrix, hostCustomMessage, hostFullVersion, clientWindowHeight, clientWindowWidth, addinName, appDomains, dialogRequirementMatrix) {
this._id = id;
this._appName = appName;
this._appVersion = appVersion;
this._appUILocale = appUILocale;
this._dataLocale = dataLocale;
this._docUrl = docUrl;
this._clientMode = clientMode;
this._settings = settings;
this._reason = reason;
this._osfControlType = osfControlType;
this._eToken = eToken;
this._correlationId = correlationId;
this._appInstanceId = appInstanceId;
this._touchEnabled = touchEnabled;
this._commerceAllowed = commerceAllowed;
this._appMinorVersion = appMinorVersion;
this._requirementMatrix = requirementMatrix;
this._hostCustomMessage = hostCustomMessage;
this._hostFullVersion = hostFullVersion;
this._isDialog = false;
this._clientWindowHeight = clientWindowHeight;
this._clientWindowWidth = clientWindowWidth;
this._addinName = addinName;
this._appDomains = appDomains;
this._dialogRequirementMatrix = dialogRequirementMatrix;
this.get_id = function get_id() {
return this._id
};
this.get_appName = function get_appName() {
return this._appName
};
this.get_appVersion = function get_appVersion() {
return this._appVersion
};
this.get_appUILocale = function get_appUILocale() {
return this._appUILocale
};
this.get_dataLocale = function get_dataLocale() {
return this._dataLocale
};
this.get_docUrl = function get_docUrl() {
return this._docUrl
};
this.get_clientMode = function get_clientMode() {
return this._clientMode
};
this.get_bindings = function get_bindings() {
return this._bindings
};
this.get_settings = function get_settings() {
return this._settings
};
this.get_reason = function get_reason() {
return this._reason
};
this.get_osfControlType = function get_osfControlType() {
return this._osfControlType
};
this.get_eToken = function get_eToken() {
return this._eToken
};
this.get_correlationId = function get_correlationId() {
return this._correlationId
};
this.get_appInstanceId = function get_appInstanceId() {
return this._appInstanceId
};
this.get_touchEnabled = function get_touchEnabled() {
return this._touchEnabled
};
this.get_commerceAllowed = function get_commerceAllowed() {
return this._commerceAllowed
};
this.get_appMinorVersion = function get_appMinorVersion() {
return this._appMinorVersion
};
this.get_requirementMatrix = function get_requirementMatrix() {
return this._requirementMatrix
};
this.get_dialogRequirementMatrix = function get_dialogRequirementMatrix() {
return this._dialogRequirementMatrix
};
this.get_hostCustomMessage = function get_hostCustomMessage() {
return this._hostCustomMessage
};
this.get_hostFullVersion = function get_hostFullVersion() {
return this._hostFullVersion
};
this.get_isDialog = function get_isDialog() {
return this._isDialog
};
this.get_clientWindowHeight = function get_clientWindowHeight() {
return this._clientWindowHeight
};
this.get_clientWindowWidth = function get_clientWindowWidth() {
return this._clientWindowWidth
};
this.get_addinName = function get_addinName() {
return this._addinName
};
this.get_appDomains = function get_appDomains() {
return this._appDomains
}
};
OSF.OsfControlType = {
DocumentLevel: 0,
ContainerLevel: 1
};
OSF.ClientMode = {
ReadOnly: 0,
ReadWrite: 1
};
OSF.OUtil.setNamespace("Microsoft", window);
OSF.OUtil.setNamespace("Office", Microsoft);
OSF.OUtil.setNamespace("Client", Microsoft.Office);
OSF.OUtil.setNamespace("WebExtension", Microsoft.Office);
Microsoft.Office.WebExtension.InitializationReason = {
Inserted: "inserted",
DocumentOpened: "documentOpened"
};
Microsoft.Office.WebExtension.ValueFormat = {
Unformatted: "unformatted",
Formatted: "formatted"
};
Microsoft.Office.WebExtension.FilterType = { All: "all" };
Microsoft.Office.WebExtension.PlatformType = {
PC: "PC",
OfficeOnline: "OfficeOnline",
Mac: "Mac",
iOS: "iOS",
Android: "Android",
Universal: "Universal"
};
Microsoft.Office.WebExtension.HostType = {
Word: "Word",
Excel: "Excel",
PowerPoint: "PowerPoint",
Outlook: "Outlook",
OneNote: "OneNote",
Project: "Project",
Access: "Access"
};
Microsoft.Office.WebExtension.Parameters = {
BindingType: "bindingType",
CoercionType: "coercionType",
ValueFormat: "valueFormat",
FilterType: "filterType",
Columns: "columns",
SampleData: "sampleData",
GoToType: "goToType",
SelectionMode: "selectionMode",
Id: "id",
PromptText: "promptText",
ItemName: "itemName",
FailOnCollision: "failOnCollision",
StartRow: "startRow",
StartColumn: "startColumn",
RowCount: "rowCount",
ColumnCount: "columnCount",
Callback: "callback",
AsyncContext: "asyncContext",
Data: "data",
Rows: "rows",
OverwriteIfStale: "overwriteIfStale",
FileType: "fileType",
EventType: "eventType",
Handler: "handler",
SliceSize: "sliceSize",
SliceIndex: "sliceIndex",
ActiveView: "activeView",
Status: "status",
PlatformType: "platformType",
HostType: "hostType",
ForceConsent: "forceConsent",
ForceAddAccount: "forceAddAccount",
Xml: "xml",
Namespace: "namespace",
Prefix: "prefix",
XPath: "xPath",
Text: "text",
ImageLeft: "imageLeft",
ImageTop: "imageTop",
ImageWidth: "imageWidth",
ImageHeight: "imageHeight",
TaskId: "taskId",
FieldId: "fieldId",
FieldValue: "fieldValue",
ServerUrl: "serverUrl",
ListName: "listName",
ResourceId: "resourceId",
ViewType: "viewType",
ViewName: "viewName",
GetRawValue: "getRawValue",
CellFormat: "cellFormat",
TableOptions: "tableOptions",
TaskIndex: "taskIndex",
ResourceIndex: "resourceIndex",
CustomFieldId: "customFieldId",
Url: "url",
MessageHandler: "messageHandler",
Width: "width",
Height: "height",
RequireHTTPs: "requireHTTPS",
MessageToParent: "messageToParent",
DisplayInIframe: "displayInIframe",
MessageContent: "messageContent",
HideTitle: "hideTitle",
AppCommandInvocationCompletedData: "appCommandInvocationCompletedData"
};
OSF.OUtil.setNamespace("DDA", OSF);
OSF.DDA.DocumentMode = {
ReadOnly: 1,
ReadWrite: 0
};
OSF.DDA.PropertyDescriptors = { AsyncResultStatus: "AsyncResultStatus" };
OSF.DDA.EventDescriptors = {};
OSF.DDA.ListDescriptors = {};
OSF.DDA.UI = {};
OSF.DDA.getXdmEventName = function OSF_DDA$GetXdmEventName(id, eventType) {
if (eventType == Microsoft.Office.WebExtension.EventType.BindingSelectionChanged || eventType == Microsoft.Office.WebExtension.EventType.BindingDataChanged || eventType == Microsoft.Office.WebExtension.EventType.DataNodeDeleted || eventType == Microsoft.Office.WebExtension.EventType.DataNodeInserted || eventType == Microsoft.Office.WebExtension.EventType.DataNodeReplaced)
return id + "_" + eventType;
else
return eventType
};
OSF.DDA.MethodDispId = {
dispidMethodMin: 64,
dispidGetSelectedDataMethod: 64,
dispidSetSelectedDataMethod: 65,
dispidAddBindingFromSelectionMethod: 66,
dispidAddBindingFromPromptMethod: 67,
dispidGetBindingMethod: 68,
dispidReleaseBindingMethod: 69,
dispidGetBindingDataMethod: 70,
dispidSetBindingDataMethod: 71,
dispidAddRowsMethod: 72,
dispidClearAllRowsMethod: 73,
dispidGetAllBindingsMethod: 74,
dispidLoadSettingsMethod: 75,
dispidSaveSettingsMethod: 76,
dispidGetDocumentCopyMethod: 77,
dispidAddBindingFromNamedItemMethod: 78,
dispidAddColumnsMethod: 79,
dispidGetDocumentCopyChunkMethod: 80,
dispidReleaseDocumentCopyMethod: 81,
dispidNavigateToMethod: 82,
dispidGetActiveViewMethod: 83,
dispidGetDocumentThemeMethod: 84,
dispidGetOfficeThemeMethod: 85,
dispidGetFilePropertiesMethod: 86,
dispidClearFormatsMethod: 87,
dispidSetTableOptionsMethod: 88,
dispidSetFormatsMethod: 89,
dispidExecuteRichApiRequestMethod: 93,
dispidAppCommandInvocationCompletedMethod: 94,
dispidCloseContainerMethod: 97,
dispidGetAccessTokenMethod: 98,
dispidGetSelectedTaskMethod: 110,
dispidGetSelectedResourceMethod: 111,
dispidGetTaskMethod: 112,
dispidGetResourceFieldMethod: 113,
dispidGetWSSUrlMethod: 114,
dispidGetTaskFieldMethod: 115,
dispidGetProjectFieldMethod: 116,
dispidGetSelectedViewMethod: 117,
dispidGetTaskByIndexMethod: 118,
dispidGetResourceByIndexMethod: 119,
dispidSetTaskFieldMethod: 120,
dispidSetResourceFieldMethod: 121,
dispidGetMaxTaskIndexMethod: 122,
dispidGetMaxResourceIndexMethod: 123,
dispidCreateTaskMethod: 124,
dispidAddDataPartMethod: 128,
dispidGetDataPartByIdMethod: 129,
dispidGetDataPartsByNamespaceMethod: 130,
dispidGetDataPartXmlMethod: 131,
dispidGetDataPartN