mashlib 2.1.3 → 2.1.4-e3cab069
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/mash.css +81 -0
- package/dist/mash.css.map +1 -1
- package/dist/mashlib.js +632 -237
- package/dist/mashlib.js.map +1 -1
- package/dist/mashlib.min.js +11 -11
- package/dist/mashlib.min.js.map +1 -1
- package/package.json +8 -9
package/dist/mashlib.js
CHANGED
|
@@ -14449,8 +14449,50 @@ async function getDataModelIssues(groups) {
|
|
|
14449
14449
|
Object.defineProperty(exports, "__esModule", ({
|
|
14450
14450
|
value: true
|
|
14451
14451
|
}));
|
|
14452
|
+
Object.defineProperty(exports, "addPersonToGroup", ({
|
|
14453
|
+
enumerable: true,
|
|
14454
|
+
get: function () {
|
|
14455
|
+
return _contactLogic.addPersonToGroup;
|
|
14456
|
+
}
|
|
14457
|
+
}));
|
|
14458
|
+
Object.defineProperty(exports, "addWebIDToContacts", ({
|
|
14459
|
+
enumerable: true,
|
|
14460
|
+
get: function () {
|
|
14461
|
+
return _webidControl.addWebIDToContacts;
|
|
14462
|
+
}
|
|
14463
|
+
}));
|
|
14452
14464
|
exports["default"] = void 0;
|
|
14465
|
+
Object.defineProperty(exports, "getPersonas", ({
|
|
14466
|
+
enumerable: true,
|
|
14467
|
+
get: function () {
|
|
14468
|
+
return _webidControl.getPersonas;
|
|
14469
|
+
}
|
|
14470
|
+
}));
|
|
14453
14471
|
exports.getSameAs = getSameAs;
|
|
14472
|
+
Object.defineProperty(exports, "groupMembers", ({
|
|
14473
|
+
enumerable: true,
|
|
14474
|
+
get: function () {
|
|
14475
|
+
return _contactLogic.groupMembers;
|
|
14476
|
+
}
|
|
14477
|
+
}));
|
|
14478
|
+
Object.defineProperty(exports, "removeWebIDFromContacts", ({
|
|
14479
|
+
enumerable: true,
|
|
14480
|
+
get: function () {
|
|
14481
|
+
return _webidControl.removeWebIDFromContacts;
|
|
14482
|
+
}
|
|
14483
|
+
}));
|
|
14484
|
+
Object.defineProperty(exports, "saveNewContact", ({
|
|
14485
|
+
enumerable: true,
|
|
14486
|
+
get: function () {
|
|
14487
|
+
return _contactLogic.saveNewContact;
|
|
14488
|
+
}
|
|
14489
|
+
}));
|
|
14490
|
+
Object.defineProperty(exports, "saveNewGroup", ({
|
|
14491
|
+
enumerable: true,
|
|
14492
|
+
get: function () {
|
|
14493
|
+
return _contactLogic.saveNewGroup;
|
|
14494
|
+
}
|
|
14495
|
+
}));
|
|
14454
14496
|
var _solidLogic = __webpack_require__(9332);
|
|
14455
14497
|
var _contactLogic = __webpack_require__(466);
|
|
14456
14498
|
var UI = _interopRequireWildcard(__webpack_require__(500));
|
|
@@ -14458,6 +14500,7 @@ var _mintNewAddressBook = __webpack_require__(7587);
|
|
|
14458
14500
|
var _individual = __webpack_require__(547);
|
|
14459
14501
|
var _toolsPane = __webpack_require__(4195);
|
|
14460
14502
|
var _groupMembershipControl = __webpack_require__(9208);
|
|
14503
|
+
var _webidControl = __webpack_require__(4416);
|
|
14461
14504
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
14462
14505
|
/* Contact AddressBook Pane
|
|
14463
14506
|
**
|
|
@@ -15239,7 +15282,6 @@ var _default = exports["default"] = {
|
|
|
15239
15282
|
} // render function
|
|
15240
15283
|
}; // pane object
|
|
15241
15284
|
// ends
|
|
15242
|
-
|
|
15243
15285
|
function getSameAs(kb, item, doc) {
|
|
15244
15286
|
return kb.each(item, ns.owl('sameAs'), null, doc).concat(kb.each(null, ns.owl('sameAs'), item, doc));
|
|
15245
15287
|
}
|
|
@@ -18207,7 +18249,7 @@ if (true) {
|
|
|
18207
18249
|
(module) {
|
|
18208
18250
|
|
|
18209
18251
|
"use strict";
|
|
18210
|
-
/*! @license DOMPurify 3.3.
|
|
18252
|
+
/*! @license DOMPurify 3.3.3 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.3.3/LICENSE */
|
|
18211
18253
|
|
|
18212
18254
|
|
|
18213
18255
|
|
|
@@ -18516,7 +18558,7 @@ const _createHooksMap = function _createHooksMap() {
|
|
|
18516
18558
|
function createDOMPurify() {
|
|
18517
18559
|
let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();
|
|
18518
18560
|
const DOMPurify = root => createDOMPurify(root);
|
|
18519
|
-
DOMPurify.version = '3.3.
|
|
18561
|
+
DOMPurify.version = '3.3.3';
|
|
18520
18562
|
DOMPurify.removed = [];
|
|
18521
18563
|
if (!window || !window.document || window.document.nodeType !== NODE_TYPE.document || !window.Element) {
|
|
18522
18564
|
// Not running in a browser, provide a factory function
|
|
@@ -18811,7 +18853,7 @@ function createDOMPurify() {
|
|
|
18811
18853
|
/* Parse profile info */
|
|
18812
18854
|
if (USE_PROFILES) {
|
|
18813
18855
|
ALLOWED_TAGS = addToSet({}, text);
|
|
18814
|
-
ALLOWED_ATTR =
|
|
18856
|
+
ALLOWED_ATTR = create(null);
|
|
18815
18857
|
if (USE_PROFILES.html === true) {
|
|
18816
18858
|
addToSet(ALLOWED_TAGS, html$1);
|
|
18817
18859
|
addToSet(ALLOWED_ATTR, html);
|
|
@@ -18832,6 +18874,13 @@ function createDOMPurify() {
|
|
|
18832
18874
|
addToSet(ALLOWED_ATTR, xml);
|
|
18833
18875
|
}
|
|
18834
18876
|
}
|
|
18877
|
+
/* Prevent function-based ADD_ATTR / ADD_TAGS from leaking across calls */
|
|
18878
|
+
if (!objectHasOwnProperty(cfg, 'ADD_TAGS')) {
|
|
18879
|
+
EXTRA_ELEMENT_HANDLING.tagCheck = null;
|
|
18880
|
+
}
|
|
18881
|
+
if (!objectHasOwnProperty(cfg, 'ADD_ATTR')) {
|
|
18882
|
+
EXTRA_ELEMENT_HANDLING.attributeCheck = null;
|
|
18883
|
+
}
|
|
18835
18884
|
/* Merge configuration parameters */
|
|
18836
18885
|
if (cfg.ADD_TAGS) {
|
|
18837
18886
|
if (typeof cfg.ADD_TAGS === 'function') {
|
|
@@ -19229,6 +19278,10 @@ function createDOMPurify() {
|
|
|
19229
19278
|
*/
|
|
19230
19279
|
// eslint-disable-next-line complexity
|
|
19231
19280
|
const _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {
|
|
19281
|
+
/* FORBID_ATTR must always win, even if ADD_ATTR predicate would allow it */
|
|
19282
|
+
if (FORBID_ATTR[lcName]) {
|
|
19283
|
+
return false;
|
|
19284
|
+
}
|
|
19232
19285
|
/* Make sure attribute cannot clobber */
|
|
19233
19286
|
if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {
|
|
19234
19287
|
return false;
|
|
@@ -19321,7 +19374,7 @@ function createDOMPurify() {
|
|
|
19321
19374
|
value = SANITIZE_NAMED_PROPS_PREFIX + value;
|
|
19322
19375
|
}
|
|
19323
19376
|
/* Work around a security issue with comments inside attributes */
|
|
19324
|
-
if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\/(style|title|textarea)/i, value)) {
|
|
19377
|
+
if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i, value)) {
|
|
19325
19378
|
_removeAttribute(name, currentNode);
|
|
19326
19379
|
continue;
|
|
19327
19380
|
}
|
|
@@ -20464,14 +20517,14 @@ exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
|
|
|
20464
20517
|
/***/ 3931
|
|
20465
20518
|
(module, __unused_webpack_exports, __webpack_require__) {
|
|
20466
20519
|
|
|
20467
|
-
!function(e,n){ true?module.exports=n(__webpack_require__(500),__webpack_require__(9332),__webpack_require__(8230)):0}(this,(e,n,t)=>(()=>{"use strict";var s={85:(e,n,t)=>{t.d(n,{board:()=>o});var s=t(426),i=t(663),r=t(264);function o(e,n,t,o){const a=e.createElement("div");a.style="width: 100%;",a.style.margin="1em";const l=a.appendChild(e.createElement("table"));l.style="width: 100%;",l.style.borderCollapse="collapse";const u=l.appendChild(e.createElement("tr")),c=l.appendChild(e.createElement("tr"));function d(n,t){const r=e.createElement("div"),o=r.appendChild(e.createElement("table")),a=i.store.each(n,s.ns.rdf("type")).map(e=>i.store.any(e,s.ns.ui("backgroundColor"))).filter(e=>e);o.appendChild(s.widgets.personTR(e,null,n)),o.subject=n,o.style="margin: 1em;";const l=a[0]||i.store.any(t,s.ns.ui("backgroundColor"));return r.style.backgroundColor=l?l.value:"#fff",r}function p(e,n,t,s){const r=e.map(e=>[i.store.any(e,n)||t,e]);return r.sort(),s&&r.reverse(),r.map(e=>e[1])}return n.forEach(n=>{const t=u.appendChild(e.createElement("th"));t.textContent=s.utils.label(n,!0),t.subject=n,t.style="margin: 0.3em; padding: 0.5em 1em; font-treatment: bold; font-size: 120%;";const r=c.appendChild(e.createElement("td"));r.subject=n,r.style="border: 0.01em solid white; padding: 0.1em;",o.columnDropHandler&&s.widgets.makeDropTarget(r,function(e){e.forEach(function(e){console.log("Dropped on column: "+e);const t=i.store.sym(e);o.columnDropHandler(t,n)})})}),a.refresh=function(){const e=new r.Literal(new Date),n=t||o.renderItem||d;function a(e){const t=n(e);return s.widgets.makeDraggable(t,e),t.subject=e,t}for(let n=c.firstChild;n;n=n.nextSibling){const t=n.subject;let r=i.store.each(null,s.ns.rdf("type"),t);const l=o.sortBy||s.ns.dct("created");o.filter&&(r=r.filter(o.filter));const u=p(r,l,e,!0);s.utils.syncTableToArrayReOrdered(n,u,a)}},a.refresh(),a}},178:(e,n,t)=>{t.d(n,{exposeOverlay:()=>m,getState:()=>d,renderIssue:()=>w,renderIssueCard:()=>f});var s=t(426),i=t(663),r=t(324),o=t(264);const a=i.store,l=!1,u=s.icons.iconBase+"noun_17020_gray-tick.svg",c=(s.icons.iconBase,s.icons.iconBase+"noun_17020.svg");function d(e,n){const t=a.the(e,s.ns.wf("tracker"),null,e.doc()),i=a.any(t,s.ns.wf("issueClass"));n=n||i;const r=a.each(e,s.ns.rdf("type")).filter(e=>a.holds(e,s.ns.rdfs("subClassOf"),n));if(1!==r.length)throw new Error("Issue must have one type as state: "+r.length);return r[0]}function p(e){const n=a.each(e,s.ns.rdf("type")).map(e=>a.any(e,s.ns.ui("backgroundColor"))).filter(e=>!!e);return n.length?n[0].value:null}function f(e,n){function t(){const n=p(e)||"white";o.style.backgroundColor=n,c.style.backgroundColor=n}const i=n.dom,r=!p(e),o=i.createElement("div"),l=o.appendChild(i.createElement("table"));l.style.width="100%",l.appendChild(s.widgets.personTR(i,null,e,{draggable:!1})),l.subject=e,o.style="border-radius: 0.4em; border: 0.05em solid grey; margin: 0.3em;",o.firstChild.firstChild.firstChild.firstChild.setAttribute("src",s.icons.iconBase+"noun_Danger_1259514.svg");const u=o.firstChild.firstChild.children[2],c=s.widgets.button(i,s.icons.iconBase+"noun_253504.svg","edit",async t=>{m(e,n)}),d=c.firstChild;if(d.style.width=d.style.height="1.5em",u.appendChild(c),r){const t=s.widgets.deleteButtonWithCheck(i,u,"issue",async function(){try{await a.updater.update(a.connectedStatements(e))}catch(e){!function(e,n){console.warn(e),n.paneDiv.appendChild(s.widgets.errorMessageBlock(n.dom,e))}(`Unable to delete issue: ${e}`,n)}console.log("User deleted issue "+e),o.parentNode.removeChild(o),s.widgets.refreshTree(n.paneDiv)});u.appendChild(t)}return o.style.maxWidth="24em",o.refresh=t,t(),o}function m(e,n){const t=n.overlay;t.innerHTML="";const i=t.appendChild(s.widgets.button(n.dom,s.icons.iconBase+"noun_1180156.svg","close",function(){t.innerHTML="",t.style.visibility="hidden"}));i.style.float="right",i.style.margin="0.7em",delete i.style.backgroundColor,t.style.visibility="visible",t.appendChild(w(e,n)),t.firstChild.style.overflow="auto"}function h(e,n){const t=e.createElement("div");return t.setAttribute("style","height: 1em; margin: 0.5em;"),t.style.backgroundColor=n,t}function w(e,n){function t(n,t,i){if(l){if(!w(y,"trackLastModified"))return;const n=t.statementsMatching(e,s.ns.dct("modified")).concat(t.statementsMatching(e,s.ns.wf("modifiedBy"))),r=[o.st(e,s.ns.dct("modified"),new Date,i)];k&&r.push(o.st(e,s.ns.wf("modifiedBy"),k,i)),t.updater.update(n,r,function(e,n,t){})}}function d(e,n){const t=g.createElement("pre");return t.setAttribute("style",n||"color: grey"),F.appendChild(t),t.appendChild(g.createTextNode(e)),t}function f(e){console.warn(e),F.appendChild(s.widgets.errorMessageBlock(g,e))}function m(e,n){e||f("Sorry, failed to save your change:\n"+n)}function w(e,n){const t=a.any(e,s.ns.ui(n));return!(!t||!t.value)}const g=n.dom,y=a.the(e,s.ns.wf("tracker"),null,e.doc());if(!y)throw new Error("No tracker");const b=a.any(y,s.ns.wf("stateStore")),C=e.doc(),F=g.createElement("div"),k=i.authn.currentUser(),v=p(e)||"white";!function(){const n="padding: 0.5em 1.5em 1em 1.5em; border: 0.7em;border-color: "+(p(e)||"#eee")+"; ";F.setAttribute("style",n),F.style.backgroundColor="white"}(),i.authn.checkUser();const T=F.appendChild(s.widgets.button(g,function(e){return function(e){return!!a.findTypeURIs(e)[s.ns.wf("Open").uri]}(e)?u:c}(e)));s.widgets.makeDraggable(T,e);const x=a.any(y,s.ns.wf("issueClass"));if(!x)throw new Error("This tracker "+y+" has no issueClass");const S=s.widgets.makeSelectForCategory(g,a,e,x,b,function(e,n){e?(t(0,a,C),s.widgets.refreshTree(F)):console.log("Failed to change state:\n"+n)});F.appendChild(S);const P=a.each(y,s.ns.wf("issueCategory"));for(const n of P)F.appendChild(s.widgets.makeSelectForCategory(g,a,e,n,b,function(e,n){e?(t(0,a,C),s.widgets.refreshTree(F)):console.log("Failed to change category:\n"+n)}));const O=g.createElement("a");O.setAttribute("href",y.uri),O.setAttribute("style","float:right"),F.appendChild(O).textContent=s.utils.label(y),O.addEventListener("click",s.widgets.openHrefInOutlineMode,!0);const M=s.ns.wf("coreIsueForm");o.parse('\n @prefix : <http://www.w3.org/ns/ui#> .\n @prefix core: <http://www.w3.org/2005/01/wf/flow#>.\n @prefix dc: <http://purl.org/dc/elements/1.1/>.\n @prefix wf: <http://www.w3.org/2005/01/wf/flow#> .\n\n core:coreIsueForm a :Form;\n <http://purl.org/dc/elements/1.1/title> "Core issue data";\n :parts (\n core:titleField\n core:descriptionField ) .\n\n core:descriptionField a :MultiLineTextField;\n :label "Description";\n :property wf:description;\n :size "40" .\n\n core:titleField a :SingleLineTextField;\n :label "Title";\n :maxLength "128";\n :property dc:title; # @@ Should move to dct or schema\n :size "40" .\n\n wf:Task :creationForm core:coreIsueForm .\n',a,M.doc().uri,"text/turtle");const A=s.widgets.appendForm(g,null,{},e,M,b,m);F.appendChild(A),A.style.backgroundColor=v;const D=a.statementsMatching(e,s.ns.wf("assignee"));if(D.length>1){d("Weird, was assigned to more than one person. Fixing ..");const e=D.slice(1);a.updater.update(e,[],function(e,n,t){n?d("Now fixed."):f("Fixed failed: "+t)})}function E(e){return s.widgets.personTR(g,s.ns.wf("dependent"),e,{link:!1})}function I(e,n){n=n||[];const t=a.any(null,s.ns.wf("dependent"),e,e.doc());return t?I(t,[t].concat(n)):n}if(async function(){const n=a.each(e,s.ns.wf("assigneeGroup"));await a.fetcher.load(n);const t=n.map(e=>a.each(e,s.ns.vcard("member"),null,e.doc())).flat(),i=a.any(null,s.ns.doap("bug-database"),y);i&&await a.fetcher.load(i);const r=i?a.each(i,s.ns.doap("developer")):[];return t.concat(r)}().then(n=>{if(n.length){n.forEach(function(e){a.fetcher.lookUpThing(e)});const i={nullLabel:"(unassigned)"};F.appendChild(s.widgets.makeSelectForOptions(g,a,e,s.ns.wf("assignee"),n,i,C,function(e,n){e?t(0,a,C):console.log("Failed to change assignee:\n"+n)}))}}),w(y,"allowSubIssues")){const n=F.appendChild(g.createElement("div"));n.style="margin: 1em; padding: 1em;",n.appendChild(g.createElement("h4")).textContent="Super Issues";const t=n.appendChild(g.createElement("div"));t.style.display="flex",t.refresh=function(){const n=I(e);s.utils.syncTableToArrayReOrdered(t,n,E)},t.refresh(),n.appendChild(g.createElement("h4")).textContent="Sub Issues";const i=n.appendChild(g.createElement("div"));i.style.display="flex",i.style.flexDirection="reverse",i.refresh=function(){const n=a.each(e,s.ns.wf("dependent"),null,e.doc());s.utils.syncTableToArrayReOrdered(i,n,E)},i.refresh();const o=g.createElement("button");o.setAttribute("type","button"),n.appendChild(o);const l=s.utils.label(x);o.innerHTML="New sub "+l,o.setAttribute("style","float: right; margin: 0.5em 1em;"),o.addEventListener("click",function(t){n.insertBefore((0,r.newIssueForm)(g,a,y,e,i.refresh),o.nextSibling)},!1)}F.appendChild(g.createElement("br"));const L=a.any(y,s.ns.wf("extrasEntryForm"));L&&s.widgets.appendForm(g,F,{},e,L,b,m);const N=F.appendChild(h(g,v));let q;a.anyValue(y,s.ns.wf("issueURITemplate"))?q=e.doc():(q=a.any(y,s.ns.wf("messageStore")),q||(q=a.any(y,s.ns.wf("stateStore"))),a.sym(q.uri+"#Chat"+(new Date).getTime())),a.fetcher.nowOrWhenFetched(q,function(n,t,i){if(n){const n=(0,s.messageArea)(g,a,e,q);F.insertBefore(n,N),F.insertBefore(h(g,v),n)}else{const e=g.createElement("p");e.textContent=t,F.insertBefore(e,N)}}),F.appendChild(g.createElement("div")).innerHTML="<h4>Attachments</h4>\n <p>Drag files, emails,\n web pages onto the paper clip, or click the file upload button.</p>";const j=e.uri.endsWith("/index.ttl#this")?e.uri.slice(0,14)+"Files/":e.dir().uri+"Files/"+e.uri.split("#")[1]+"/";s.widgets.attachmentList(g,e,F,{doc:b,promptIcon:s.icons.iconBase+"noun_25830.svg",uploadFolder:a.sym(j),predicate:s.ns.wf("attachment")}),s.widgets.deleteButtonWithCheck(g,F,"issue",async function(){try{await a.updater.update(a.connectedStatements(e))}catch(e){f(`Unable to delete issue: ${e}`)}f("DELETED OK"),F.style.backgroundColor="#eee",F.style.fontColor="orange"}).style.float="right";const U=g.createElement("button");return U.textContent="refresh messages",U.addEventListener("click",async function(e){try{await a.fetcher.load(q,{force:!0,clearPreviousData:!0})}catch(e){return void alert(e)}s.widgets.refreshTree(F)},!1),U.setAttribute("style",s.style.button),F.appendChild(U),F}},197:e=>{e.exports='# Ontology for user interface hints and forms\n#\n# See also related: the Fresnel language\n#\n@prefix contact: <http://www.w3.org/2000/10/swap/pim/contact#>.\n@prefix dc: <http://purl.org/dc/elements/1.1/>.\n@prefix doc: <http://www.w3.org/2000/10/swap/pim/doc#>.\n@prefix foaf: <http://xmlns.com/foaf/0.1/>.\n@prefix owl: <http://www.w3.org/2002/07/owl#>.\n@prefix r: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.\n@prefix s: <http://www.w3.org/2000/01/rdf-schema#>.\n@prefix tt: <http://dig.csail.mit.edu/2010/issues/track#>.\n@prefix ui: <http://www.w3.org/ns/ui#>.\n@prefix : <http://www.w3.org/ns/ui#>.\n@prefix wf: <http://www.w3.org/2005/01/wf/flow#>.\n@prefix xsd: <http://www.w3.org/2001/XMLSchema#>.\n\n@keywords is, of, a.\n\n<> dc:title "An ontology for User Interface description, Hints and Forms.";\n dc:description """The User Interface ontology allows the definition\n of forms for processing RDF model data, and include a bootstrap form for\n editing forms. It allows user interface hints such as background colors,\n can be associated with objects and classes.\n """;\n dc:created 2010-08-07;\n dc:license <https://creativecommons.org/publicdomain/zero/1.0/>;\n dc:modified """$Date: 2020/03/22 16:53:21 $""";\n dc:author <https://www.w3.org/People/Berners-Lee/card#i>.\n\nstyle a r:Property, owl:DatatypeProperty;\n s:label "style";\n prompt "CSS style";\n s:comment """Must be a valid CSS style string such as one could put in\n an HTML style attribute. Depending on the user interface system, this can\n by given to individuals, classes or properties. It is up to a user interface\n which wants to draw on them to pick how it uses styles from which parts\n of the data it has. For example, the style of a class may be picked\n to distinguish information about things in that class.""".\n\nbackgroundColor a r:Property, owl:DatatypeProperty;\n s:label "background color"@en;\n s:range ui:Color;\n s:comment """Must be a valid CSS color string such as one could put in\n an HTML style attribute. This should be in the #xxxxxx form,\n (with 6 digits of hex) so that it\n can work with Graphviz.""".\n\nbackgroundImage a r:Property, owl:DatatypeProperty;\n s:label "background image"@en;\n s:comment """URI or base64 representation of an image""".\n\ncolor a r:Property, owl:DatatypeProperty;\n s:label "color"@en;\n s:range ui:Color;\n s:comment """Must be a valid CSS color string such as one could put in\n an HTML style attribute. This should be in the #xxxxxx form,\n (with 6 digits of hex) so that it\n can work with Graphviz.""".\n\n\n\nsortPriority a r:Property, owl:DatatypeProperty;\n s:label "sort priority";\n s:range xsd:integer;\n s:comment """When individuals or classes must be sorted, then\n if they are given different values of sortPriority a user agent can\n use this as a hint to how to present information.""".\n\nsortBy a r:Property;\n s:label "sort by";\n s:domain s:Class;\n s:range r:Property;\n s:comment """A property which typically is used to sort\n members of a given class.""".\n\nseqeunce a r:Property;\n s:label "sequence number";\n s:range xsd:integer;\n s:comment """The sequence in which this item is arranged with repect to other parts.""".\n\ninitialProperties a r:Property;\n s:label "initial properties";\n s:domain s:Class;\n s:range r:List; # List of r:Property\n s:comment """A really simple way of enabling user interfaces to\n create new information about a class of things is to make a define of properties\n to be specified when a information about a new item\n ("New item" here means an item which the system\n does not have prvious information about yet,\n not an items which has just been created,\n like new friend as opposed to new baby)""";\n prompt "Properties to be specified for new ones".\n\ntableProperties a r:Property;\n s:domain s:Class;\n s:label "table properties";\n s:range r:List; # List of r:Property\n s:comment """This is a crude way of specifying a table-based\n view for objects of this class.""";\n prompt "Properties to be given in a default table view".\n\nprompt a r:Property;\n s:label "user prompt";\n s:comment """A string for the UI to use if the user needs a longer\n prompts than just a field name, the rdfs:label. """;\n ui:prompt "A longer prompt for a user inputting this property".\n\n\n# A Taxonomy of Field types\n\nui:Form owl:disjointUnionOf ( ui:ValueField ui:Group ui:Choice ui:Classifier ui:Options ui:Multiple ui:Heading ui:Comment);\n s:comment """A form can be any type of single field, or typically a Group of several fields,\n including interspersed headings and comments. """.\nui:Single owl:disjointUnionOf ( ui:ValueField ui:Group ui:Choice ui:Classifier ui:Options ui:Heading ui:Comment).\nui:ValueField owl:disjointUnionOf ( ui:TextField ui:NumericField ui:ColorField ui:DateField ui:DateTimeField ui:PhoneField ui:EmailField).\nui:NumericField owl:disjointUnionOf (ui:BooleanField ui:TriStateField ui:IntegerField ui:DecimalField ui:FloatField).\n# ui:Multiple owl:disjointUnionOf ( ui:ZeroOrMore ui:OneOrMore ).\nui:TextField owl:disjointUnionOf (ui:SingleLineTextField ui:MultiLineTextField).\n\nui:Form a s:Class; is s:subClassOf of ui:ValueField, ui:Group, ui:Choice, ui:Heading, ui:Comment, ui:Classifier, ui:Options, ui:Multiple.\nui:Single a s:Class; is s:subClassOf of ui:ValueField, ui:Group, ui:Choice, ui:Heading, ui:Comment, ui:Classifier, ui:Options.\nui:ValueField a s:Class; is s:subClassOf of ui:TextField, ui:NumericField, ui:ColorField, ui:DateField, ui:DateTimeField, ui:PhoneField, ui:EmailField.\nui:NumericField a s:Class; is s:subClassOf of ui:BooleanField, ui:TriStateField, ui:IntegerField, ui:DecimalField, ui:FloatField.\nui:TextField a s:Class; is s:subClassOf of ui:SingleLineTextField, ui:MultiLineTextField.\n\nui:Classifier a s:Class; s:label "classifier";\n s:comment """A classifier allows the user to select the type of an object.\n The possible types must be subclasses of some overall class, the "category".\n (Ideally, the superclass is also set up as the disjoint union of the subclasses,\n if they are disjoint.)\n\n The form normally stores the resulting classes using an rdf:type triple,\n but a different predicate can be used if required, so the classifier field\n needs is \'property\' defined too.\n\n If the subclass selected itself is has subclasses defined, the user can\n recursively select from them in turn, as many levels as needed.""".\n\nui:property a r:Property; s:domain ui:Form; s:range r:Property;\n s:label "property to be stored"@en;\n s:comment """Many fields prompt for information about a given property of the subject.\n When field is filled in, this gives which property is written into the data.""".\n\nui:category a r:Property; s:domain ui:Classifier; s:range s:Class;\n s:label "overall superclass"@en;\n s:comment """The superclass subclasses of which will be selected.""".\n\nui:dependingOn a r:Property; s:domain ui:Options; s:range r:Property;\n s:label "depending on"@en;\n s:comment """Many fields prompt for information about a given property of the subject""".\n\nui:for a r:Property; s:label "for"@en; s:comment "The value for which this case is selected.".\nui:use a r:Property; s:range ui:Form.\n\nui:part a r:Property; s:label "part"@en ; s:domain ui:Form; s:range ui:Form. # Used for Multiple field - the subform for each item\nui:parts a r:Property; s:label "parts"@en ; s:domain ui:Form; s:range r:Collection. # (of Forms) The ordered set of fields in a group\nui:ordered e r:Property; s:label "ordered"; s:range xsd:Boolean . # Could be useful for all kinds of things in future so not restricted to Multiple\n\nui:from a r:Property; s:domain ui:Choice; s:range r:Class;\n s:label "from"; ui:prompt "from what class".\n\nui:size a r:Property; s:domain ui:ValueField; s:range xsd:integer;\n s:label "size of field";\n ui:prompt "size of field in characters".\n\nui:maxLength a r:Property; s:domain ui:TextField; s:range xsd:integer;\n s:label "max length of value".\n\nui:minValue a r:Property; s:domain ui:ValueField; s:label "min". # @@ range?\nui:maxValue a r:Property; s:domain ui:ValueField; s:label "max".\n\n ui:creationForm a r:Property; s:domain s:Class; s:range ui:Form;\n s:label "creation form";\n s:comment """A form which may be used to collect information about a\n hitherto locally undocumented instance instance of this class.""".\n\n ui:annotationForm a r:Property; s:domain s:Class; s:range ui:Form;\n s:label "annotation form";\n s:comment """A form which may be used to add more infromation to an\ninstance of this class which we know something about. Anything from\nadding just add one more fact, to adding a whole lot of information about a specific\nfacet of the thing.\n""".\n\n\n#############################################\n#\n# Form for editing Forms\n#\n\nFormForm a ui:Form;\n dc:title "Form for editing Forms";\n is ui:creationForm of Form;\n a ui:Group; ui:parts (FF1 FF2 FF3 FieldList) .\n\n FF1 ui:sequence 1; a ui:Heading; ui:contents "Edit Form"@en .\n FF2 ui:sequence 2; a ui:SingleLineTextField; ui:property dc:title; ui:size 60 .\n FF3 ui:sequence 3; a ui:Comment; ui:contents\n """To add a field to the form, press the plus at the bottom,\n and then select what sort of field you want."""@en; ui:style "background-color: #ffe;" .\n\n FieldList ui:sequence 10; a ui:Multiple; ui:ordered true; ui:property ui:parts; ui:part FieldForm .\n\nFieldForm a ui:Group;\n dc:title "Form for selecting a type of field";\n ui:parts (\n\n [ ui:sequence 1; a ui:Classifier; ui:property r:type; ui:category ui:Form]\n\n [ a ui:Options; ui:sequence 2; ui:dependingOn r:type;\n\n ui:case [ ui:for ui:TextField; ui:use [a ui:Group; ui:parts (\n [ a ui:Choice; ui:canMintNew true; ui:property ui:property; ui:label "property"; ui:from owl:DatatypeProperty] # @@@ Needs inference on current web\n [ a ui:IntegerField; ui:property ui:size; ui:label "field size"; ui:min 1; ui:max 4096]\n [ a ui:IntegerField; ui:property ui:maxLength; ui:label "Max. length of string"; ui:min 1]\n )]];\n\n ui:case [ ui:for ui:IntegerField; ui:use [a ui:Group; ui:parts (\n [ ui:sequence 1; a ui:Choice; ui:canMintNew true; ui:property ui:property; ui:label "property"; ui:from owl:DatatypeProperty]\n [ ui:sequence 2; a ui:IntegerField; ui:property ui:min; ui:label "minimum value"]\n [ ui:sequence 3; a ui:IntegerField; ui:property ui:max; ui:label "maximum value"] ) ]];\n\n ui:case [ ui:for ui:DecimalField; ui:use [a ui:Group; ui:parts (\n [ ui:sequence 1; a ui:Choice; ui:canMintNew true; ui:property ui:property; ui:label "property"; ui:from owl:DatatypeProperty]\n [ ui:sequence 2; a ui:DecimalField; ui:property ui:min; ui:label "minimum value"]\n [ ui:sequence 3; a ui:DecimalField; ui:property ui:max; ui:label "maximum value"] ) ]];\n\n ui:case [ ui:for ui:FloatField; ui:use [a ui:Group; ui:parts (\n [ ui:sequence 1; a ui:Choice; ui:canMintNew true; ui:property ui:property; ui:label "property"; ui:from owl:DatatypeProperty]\n [ ui:sequence 2; a ui:FloatField; ui:property ui:min; ui:label "minimum value"]\n [ ui:sequence 3; a ui:FloatField; ui:property ui:max; ui:label "maximum value"] ) ]];\n\n ui:case [ ui:for ui:ColorField; ui:use [a ui:Group; ui:parts (\n [ ui:sequence 1; a ui:Choice; ui:canMintNew true; ui:property ui:property; ui:label "property"; ui:from owl:DatatypeProperty] )\n ]];\n\n ui:case [ ui:for ui:DateField; ui:use [a ui:Group; ui:parts (\n [ ui:sequence 1; a ui:Choice; ui:canMintNew true; ui:property ui:property; ui:label "property"; ui:from owl:DatatypeProperty]\n [ ui:sequence 2; a ui:DateField; ui:property ui:min; ui:label "min"]\n [ ui:sequence 3; a ui:DateField; ui:property ui:max ; ui:label "max"]\n ) ]];\n\n ui:case [ ui:for ui:DateTimeField; ui:use [a ui:Group; ui:parts (\n [ ui:sequence 1; a ui:Choice; ui:canMintNew true; ui:property ui:property; ui:label "property"; ui:from owl:DatatypeProperty]\n [ ui:sequence 2; a ui:DateTimeField; ui:property ui:min; ui:label "min"]\n [ ui:sequence 3; a ui:DateTimeField; ui:property ui:max ; ui:label "max"]\n ) ]];\n\n ui:case [ ui:for ui:EmailField; ui:use [a ui:Group; ui:parts (\n [ ui:sequence 1; a ui:Choice; ui:canMintNew true; ui:property ui:property; ui:label "property"; ui:from owl:ObjectProperty]\n ) ]];\n\n ui:case [ ui:for ui:PhoneField; ui:use [a ui:Group; ui:parts (\n [ ui:sequence 1; a ui:Choice; ui:canMintNew true; ui:property ui:property; ui:label "property"; ui:from owl:ObjectProperty]\n )]];\n\n ui:case [ ui:for ui:Group; ui:use FieldList];\n\n ui:case [ ui:for ui:Options; ui:use [a ui:Group; ui:parts (\n [ ui:sequence 1; a ui:Choice; ui:canMintNew true; ui:property ui:dependingOn; ui:label "depending on"; ui:from r:Property; ui:default r:type]\n [ ui:sequence 2; a ui:Multiple; ui:property ui:case; ui:part CaseForm]\n ) ]];\n\n ui:case [ ui:for ui:Choice; ui:use [a ui:Group; ui:parts (\n [ ui:sequence 1; a ui:Choice; ui:canMintNew true; ui:property ui:property; ui:label "property";\n ui:canMintNew true; ui:from owl:ObjectProperty]\n [ ui:sequence 2; a ui:Choice; ui:canMintNew true; ui:property ui:from; ui:label "destination class";\n ui:from s:Class; ui:canMintNew true; ]\n [ ui:sequence 3; a ui:BooleanField; ui:property ui:canMintNew; # No class form yet\n ui:label "user can add new"]\n [ ui:sequence 4; a ui:Choice; ui:canMintNew true; ui:property ui:use; ui:label "Nested Form (if any)";\n ui:from ui:Form; ui:optional true; ui:use FormForm] # @@ optional\n\n ) ]];\n\n ui:case [ ui:for ui:Classifier; ui:use [a ui:Group; ui:parts (\n [ ui:sequence 2; a ui:Comment; ui:contents """A classifier allows the user to which classes the item belongs to, given a common superclass of the allowed classes. Give the superclass here:""" ]\n\n [ ui:sequence 4; a ui:Choice; ui:canMintNew true; ui:property ui:category; ui:label "superclass"; ui:from s:Class]\n\n [ ui:sequence 6; a ui:Comment; ui:contents """(When the choice is made normally the item is given a rdf:type. Set this to rdf:type unless you want the form to set a different property.)""" ]\n\n [ ui:sequence 8; a ui:Choice; ui:canMintNew true; ui:property ui:property;\n ui:label "property"; ui:from owl:ObjectProperty; ui:default r:type] # @@ restriction\n\n ) ]];\n\n ui:case [ ui:for ui:Multiple; ui:use [a ui:Group; ui:parts (\n [ui:sequence 0; a ui:BooleanField; ui:property ui:ordered; ui:label "ordered"] # If this an ordered array or an unordered set?\n [ui:sequence 0; a ui:IntegerField; ui:property ui:min; ui:label "minimum number"] # If this an ordered array or an unordered set?\n [ui:sequence 1; a ui:Choice; ui:canMintNew true; ui:property ui:property; ui:label "property"; ui:from r:Property]\n [ui:sequence 2; a ui:Choice; ui:canMintNew true; ui:property ui:part; ui:from ui:Form; ui:use FieldForm] # Form for details of the field part of the multiple\n ) ]];\n\n ui:case [ ui:for ui:Heading; ui:use [a ui:SingleLineTextField; ui:property ui:contents]];\n\n ui:case [ ui:for ui:Comment; ui:use [a ui:MultiLineTextField; ui:property ui:contents]]\n ]).\n\n\nCaseForm a ui:Group;\n dc:title "Form for a conditional case in a form";\n ui:parts (\n [ ui:sequence 1; a ui:Choice; ui:canMintNew true; ui:property ui:for; ui:label "when it is"; ui:canMintNew true; ui:from s:Class]\n [ui:sequence 2; a ui:Choice; ui:canMintNew true; ui:property ui:use; ui:from ui:Form; ui:canMintNew true; ui:use FieldForm] ). # Form for details of the field part of the multiple\n\n# ENDS\n'},240:e=>{e.exports='# Issue tracking - Workflow application definition ontology\n#\n# Finite state automaton ontology\n#\n# See requirements for tracking tools http://www.w3.org/2005/01/06-tool-req.html\n#\n@keywords a, is, of.\n\n@prefix : <http://www.w3.org/2005/01/wf/flow#>.\n@prefix wf: <http://www.w3.org/2005/01/wf/flow#>.\n\n@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .\n@prefix s: <http://www.w3.org/2000/01/rdf-schema#> .\n@prefix owl: <http://www.w3.org/2002/07/owl#>.\n@prefix xsd: <http://www.w3.org/2001/XMLSchema#>.\n\n@prefix doc: <http://www.w3.org/2000/10/swap/pim/doc#> .\n@prefix log: <http://www.w3.org/2000/10/swap/log#> .\n@prefix foaf: <http://xmlns.com/foaf/0.1/>.\n@prefix contact: <http://www.w3.org/2000/10/swap/pim/contact#> .\n@prefix doap: <http://usefulinc.com/ns/doap#>.\n@prefix dc: <http://purl.org/dc/elements/1.1/>.\n@prefix dct: <http://purl.org/dc/terms/>.\n@prefix ui: <http://www.w3.org/ns/ui#>.\n\n<> dc:title "Issue Tracking Ontology";\n\n dct:creator <http://www.w3.org/People/Berners-Lee/card#i>;\n\n s:comment """This ontology defines a very general class (Task)\n which can used for any kind of bug tracking, issue tracking,\n to-do-list management, action items, goal dependency, and so on.\n It captures the state of a task as a subclass, so that\n subsumption can be used.\n It captures a discussion thread about a task.\n It captures subtasks structure if necessary.\n A "Tracker" defines actual set of states, categories, etc.,\n which a task can be in. The data about the tracker\n guides the software managing the task.\n\n There is some workflow modeling finite state machine\n terms which are optional for more complex definition\n of the transitions allowed.\n """.\n\nTask a s:Class;\n s:label "task"@en; owl:disjointUnionOf (Open Closed);\n s:comment """Something to be done in a wide sense,\n an agenda item at a meeting is one example, but any\n issue, task, action item, goal, product, deliverable, milestone, can such a thing.\n The requirement for this framework was that it would allow\n one to customize ontologies for things such as agenda items,\n action items, working group issues with a spec, w3c Last Call issues,\n software bugs and administrative requests.\n In π-calculus, a process.\n Make your type of issue a subclass of Task.\n """.\n\nOpen a s:Class; s:subClassOf Task;\n s:label "open"@en, "ouvert"@fr;\n ui:backgroundColor "#d6f5d6"; # green like github for some reason\n s:comment """A task which needs attention. The very crude states of Open and Closed all\n interoperability between different systems if the states for a given\n application are made subclasses of either Open or Closed. This allows\n tasks from different systems to be mixed and treated together with\n limited but valuable functionality.\n """.\n\nClosed a s:Class; s:subClassOf Task;\n s:label "closed"@en, "fermé"@fr;\n ui:backgroundColor "#f5d6d6"; # pink\n s:comment """A task which does not need attention. It may be closed because\n has been abandoned or completed, for example.\n """.\n\n\n ActionItem a s:Class;\n s:subClassOf Task;\n s:label "action item"@en; owl:disjointUnionOf (Open Closed);\n s:comment """An obligation taken on by a person, typically at a meeting.\n """.\n\n\ndescription a rdf:Property;\n s:label "description";\n s:comment """The description, definition,\n or abstract. Information explaining what this is.\n Not arbitrary comment about anything, only about the subject.\n (Use this property for anything. There is no domain restriction.).""".\n\ndependent a rdf:Property;\n s:label "how"; owl:inverseOf [ s:label "why"];\n s:domain Task; s:range Task;\n s:comment """Another task upon which this depends, in the sense that\n this task cannot be completed without that task being done.\n You can\'t use this for dependencies on anything other than other tasks.\n (Note the US spelling of the URI. In the UK, a dependant is a something\n which is dependent on somehing else.)""".\n\nassignee a rdf:Property;\n s:label "assigned to"; owl:inverseOf [s:label "assignment"];\n# s:domain Task;\n s:range foaf:Agent;\n s:comment """The person or group to whom this has been assigned.""".\n\n# use dct:modified\n#modified a rdf:Property;\n# s:label "last changed".\n\nmodifiedBy a rdf:Property;\n s:range foaf:Agent;\n s:label "changed by".\n\n# use dct:created instead\n#created a rdf:Property;\n# s:range xsd:dateTime;\n#\n# Use foaf:maker instead\n#creator a rdf:Property;\n# s:range foaf:Agent;\n# s:label "changed by".\n\nsubscriber a rdf:Property;\n s:label "subscriber";\n s:range foaf:Agent.\n\n\n################## Products\n#\n#\n# History: The Tracker system included a cocept of a product,\n# such that an action could be associated with *either* an issue *or* a product.\n# Noah Mendelsohn for the TAG needed to be able make\n# and to give products: Goals, scuuess criteria,\n# deliverables with dates, schedules, TAG members assigned, related issues.\n#\n\n\nProduct a s:Class; s:subClassOf Task;\n s:label "product";\n s:comment """A product is a task which monitors something\n which must be produced.""".\n\ndeliverable a rdf:Property; s:subPropertyOf dependent;\n s:range Product;\n s:label "deliverable"@en;\n s:comment """Something which must be delivered to accomplish this""".\n\ngoalDescription a rdf:Property, owl:DatatypeProperty;\n s:domain Task; s:range xsd:string;\n s:label "goals";\n s:comment """A textual description of the goals of this product, etc.""".\n\nsuccessCriteria a rdf:Property, owl:DatatypeProperty;\n s:domain Task; s:range xsd:string;\n s:label "success criteria";\n s:comment """A textual description of the successs critera.\n How when we know this is done?""".\n\ndateDue a rdf:Property, owl:DatatypeProperty;\n s:domain Task; s:range xsd:date;\n s:label "due"@en;\n s:comment """The date this task is due.\n """.\n\n################## Attachments\n\nattachment a rdf:Property;\n s:label "attachment";\n s:comment """Something related is attached for information.""".\n\nscreenShot a rdf:Property; s:subPropertyOf attachment;\n s:label "screen shot"@en;\n s:comment """An image taken by capturing the state of a\n computer screen, for example to demonstrate a problem""".\n\ntestData a rdf:Property; s:subPropertyOf attachment;\n s:label "test data"@en;\n s:comment """A file which can be used as inpiut to a test\n or to demonstrate a problem. """.\n\n\nterminalOutput a rdf:Property; s:subPropertyOf attachment;\n s:label "terminal output"@en;\n s:comment """A file showing user interaction from a\n text terminal or console etc. """.\n\n\nmessage a rdf:Property; s:subPropertyOf attachment;\n s:label "message"@en;\n s:comment """A message about this. Attached for information.""".\n\n\nMessage a s:Class; s:label "message"@en.\nrecipent a rdf:Property; s:label "to"; s:domain Message; s:range foaf:Agent.\nsender a rdf:Property; s:label "from"; s:domain Message; s:range foaf:Agent.\n\n############################# A Tracker connects and manages issues\n\ntracker a rdf:Property;\n s:label "tracker";\n owl:inverseOf [ s:label "issue"];\n s:domain Task;\n s:range Tracker.\n\nTracker a s:Class;\n s:label "tracker";\n s:comment """A set of issues and\n the constraints on how they evolve.\n To use this ontology, craete a new tracker.\n Copy an existing one or make up your own.""".\n\nissueClass a rdf:Property;\n s:label "all issues must be in";\n s:domain Tracker;\n s:range s:Class, State;\n s:comment """The class of issues which are allowed in this tracker.\n This is essemtial to the operation of the tracker,\n as it defines which states an issue can be in.\n (The issueClass must be a disjointUnionOf the state classes)""".\n\nissueCategory a rdf:Property;\n s:label "issue category";\n s:domain Tracker;\n s:range s:Class;\n s:comment """Issues may be categorized according to the\n subclasses of this class""".\n\nstateStore a rdf:Property;\n s:label "state store";\n s:domain Tracker;\n s:range doc:Document;\n s:comment """A read-write document.\n The state of the issues is modified here.\n When you set up a trcaker, thgis must be set to point\n to a writeble data resource on the web.""".\n\ntransactionStore\n a rdf:Property;\n s:label "transaction store";\n s:domain Tracker;\n s:range doc:Document;\n s:comment """An appendable document. Transactions and messsages\n can be written into here""".\n\nasigneeClass\n a rdf:Property;\n s:label "assignees must be";\n s:domain Tracker;\n s:range s:Class; # Subclass of foaf:Agent\n s:comment """When an issue is assigned, the assignee must be from this class""".\n\ninitialState\n a rdf:Property;\n s:label "initial state"@en;\n s:label "état initial"@fr;\n s:domain Tracker;\n s:range State;\n s:comment """The initial state for a new issue""".\n\n# Use this to link a project to a tracker\ndoap:bug-database owl:inverseOf [ s:label "project"@en ].\n\n\n\n\n############################################################\n#\n# Finite state machines\n#\nChange a s:Class;\n s:label "change";\n s:comment """The universal class of things which\nchange the state of a task.\nIncluded now: Creation, Transition. (Maybe in the future\nmore π-calculus constructions such as splitting & merging tasks,\nand import/export of obligations to a foreign opaque system.)\n""".\n\nTransition a s:Class; s:subClassOf Change;\n s:label "transition";\n s:comment """A transition is a change of state of\na task. Typical properties include date and/or source\n(a document causing the transition), and a final state.""".\n\nCreation a s:Class; s:subClassOf Change;\n s:label "creation";\n s:comment """A creation is a change from existence\nto non-existence\na task. Typical properties include date and/or source\n(a document causing the transition), and a final state.""".\n\n\ndate s:range DateTime.\n\nfinal a rdf:Property;\n s:label "to";\n s:domain Transition;\n s:range State.\n\ntask a rdf:Property;\n s:range Task;\n s:label "task".\n\nrequires a rdf:Property;\n s:label "requires";\n s:domain Transition;\n s:range rdf:List; # Of properties for validation\n s:comment """To be a valid transition,\n a necessary (but not necessarily sufficuent) condition\n is that there be recorded these properties for the record""".\n\naffects a rdf:Property;\n s:label "affects";\n s:domain doc:Work;\n s:range Task.\n\n\n# { ?x a Transition; task ?t; source ?doc } => { ?doc affects ?t }.\n\n\ncreates a rdf:Property;\n s:label "creates";\n s:domain doc:Work;\n s:range Task.\n\n\nallowedTransitions a rdf:Property;\n s:domain State;\n s:range rdf:List; # @@@ of Action\n s:label "allowed transitions";\n s:comment """The state machine is defined\n by these lists of transition allowed for each issue.\n (An interesting option in the Web is to make an allowed transition\n to a state in soemone else\'s ontology, which in turn allows\n transitions into many ontologies. So a finite state maxchine\n may become very large. In practice this means that a task handed\n off to another organization may be processed on all kinds of ways.)""".\n\n# { ?x a TerminalState} => { ?x allowedTransitions () }.\n\nfinal a rdf:Property;\n s:label "to";\n s:range State.\n\nissue a rdf:Property;\n s:label "issue";\n s:comment\n """A transition changes the state of the given issue.""".\n\nsource a rdf:Property;\n s:label "source";\n s:comment """The source of a transition is\n the document by which it happened""";\n s:range doc:Work.\nTerminalState a s:Class;\n s:subClassOf State;\n s:label "terminal state";\n s:comment """A state from which there are no transitions.""".\n\nNonTerminalState a s:Class;\n s:label "non-terminal state";\n owl:disjointWith TerminalState;\n s:comment """A state from which there are transitions.""".\n\n######################################################\n\n#ends\n'},264:e=>{e.exports=t},324:(e,n,t)=>{t.d(n,{newIssueForm:()=>r});var s=t(426),i=t(264);function r(e,n,t,r,o){const a=e.createElement("div"),l=n.any(t,s.ns.wf("stateStore")),u=n.any(t,s.ns.wf("issueClass")),c=s.utils.label(u);a.innerHTML="<h2>Add new "+(r?"sub ":"")+c+"</h2><p>Title of new "+c+":</p>";const d=e.createElement("input");return d.setAttribute("type","text"),d.setAttribute("style","margin: 0.5em; font-size: 100%; padding: 0.3em;"),d.setAttribute("size","100"),d.setAttribute("maxLength","2048"),d.select(),d.addEventListener("keyup",function(e){13===e.keyCode&&function(){d.setAttribute("class","pendingedit"),d.disabled=!0;const e=[],u=n.anyValue(t,s.ns.wf("issueURITemplate")),c=u?n.sym(function(e){const n=new i.Literal(new Date),t=""+(new Date).getTime(),s=n.value.slice(0,4),r=n.value.slice(5,7),o=n.value.slice(8,10);return e.replace("{N}",t).replace("{YYYY}",s).replace("{MM}",r).replace("{DD}",o)}(i.uri.join(u,l.uri))):n.sym(l.uri+"#Iss"+(new Date).getTime()),p=c.doc(),f=n.literal(d.value);e.push(new i.Statement(c,s.ns.wf("tracker"),t,l)),e.push(new i.Statement(c,s.ns.dc("title"),f,l)),e.push(new i.Statement(c,s.ns.dct("created"),new Date,l));const m=r?n.each(r,s.ns.rdf("type"),null,r.doc()):n.each(t,s.ns.wf("initialState"));for(const n of m)e.push(new i.Statement(c,s.ns.rdf("type"),n,l));r&&e.push(new i.Statement(r,s.ns.wf("dependent"),c,l)),u&&(e.push(new i.Statement(c,s.ns.wf("tracker"),t,p)),e.push(new i.Statement(c,s.ns.rdfs("seeAlso"),l,p))),n.updater.update([],e,function(e,n,t){n?(a.parentNode.removeChild(a),o(c)):console.log("Error: can't save new issue:"+t)})}()},!1),a.appendChild(d),d.focus(),a}},426:n=>{n.exports=e},663:e=>{e.exports=n},685:(e,n,t)=>{t.d(n,{csvButton:()=>o});var s=t(426),i=t(663);function r(e){const n=e.replaceAll("\n"," ");if(!n.includes(","))return n;const t='"'+n.replaceAll('"','""')+'"';if(console.log("Quoted: >>>"+t+"<<<"),t.slice(1,-1).replaceAll('""',"").includes('"'))throw new Error("CSV inconsistecy");return t}function o(e,n){const t=e.createElement("div"),o=s.widgets.button(e,s.icons.iconBase+"noun_Document_998605.svg","Copy as CSV",async e=>{const t=o.parentNode.parentNode;console.log("button gparent div",t),t.addEventListener("copy",e=>{const t=function(e,n){const t=e.any(n,s.ns.wf("stateStore")),i=e.each(null,s.ns.wf("tracker"),n,t);console.log(" CSV: Tasks:",i.length);const o=[{label:"Name",predicate:s.ns.dc("title")}],a=e.any(n,s.ns.wf("issueClass"));console.log(" CSV: States - main superclass:",a);const l={label:"State",category:a};console.log(" CSV: found column from state",l),o.push(l);const u=e.each(n,s.ns.wf("issueCategory"));console.log(" CSV: Categories : ",u),console.log(" CSV: Categories : length: ",u.length),console.log(" CSV: Categories : first: ",u[0]);const c=u;for(const e of c){const n={label:s.utils.label(e),category:e};console.log(" CSV: found column from classifications",n),o.push(n)}const d=e.any(n,s.ns.wf("extrasEntryForm"),null,null);if(console.log(" CSV: Form : ",d),d){const n=e.any(d,s.ns.ui("parts"),null,d.doc());console.log(" CSV: parts : ",n);const t=n.elements;console.log(" CSV: fields : ",t);for(const n of t){const t=e.any(n,s.ns.ui("property"));if(t){const e={label:s.utils.label(t),predicate:t};console.log(" CSV: found column from form",e),o.push(e)}}}o.push({label:"Description",predicate:s.ns.wf("description")}),console.log("Columns: ",o.length);const p=o.map(e=>e.label).join(",")+"\n";return console.log("CSV: Header= ",p),p+i.map(function(n){return o.map(t=>function(n,t){let i;if(t.predicate)return i=e.any(n,t.predicate),i?i.value:"--";if(!t.category)throw new Error("wot no pred or cat",t);{const r=e.each(n,s.ns.rdf("type"));for(const n of r)e.holds(n,s.ns.rdfs("subClassOf"),t.category)&&(i=n);if(!i)return"?"+s.utils.label(t.category)}return s.utils.label(i)}(n,t)).map(r).join(",")+"\n"}).join("")}(i.store,n);e.clipboardData.setData("text/plain",t),e.clipboardData.setData("text/csv",t),alert("Copy data: "+t),e.preventDefault()})});return t.appendChild(o),t}},719:(e,n,t)=>{t.d(n,{newTrackerButton:()=>l});var s=t(426),i=t(264),r=t(663);const o=s.ns,a=r.store.updater;function l(e,n){const t=s.login.newAppInstance(n.dom,{noun:"tracker"},function(t,r){function l(e){if(void 0!==e.elements)return e.elements.map(l);if(void 0===e.uri)return e;let n=e.uri;return n===p.uri?f:(n.slice(0,h.length)===h&&(n=r+n.slice(h.length)),d.sym(n))}const u="issuetracker.w3.org",c=s.ns.space,d=n.session.store;if(!r&&("/"!==(r=d.any(t,c("uriPrefix")).value).slice(-1)&&(i.log.error(u+": No / at end of uriPrefix "+r),r+="/"),r+=u+"/"+(new Date).getTime()+"/",!confirm("Make new tracker at "+r+"?")))return;const p=d.any(e,o.wf("stateStore")),f=d.sym(r+"store.ttl"),m=e.doc(),h=m.uri.slice(0,m.uri.lastIndexOf("/")+1),w=l(m),g=l(e),y=d.statementsMatching(void 0,void 0,void 0,m);for(let e=0;e<y.length;e++){const n=y[e];d.add(l(n.subject),l(n.predicate),l(n.object),w)}d.add(g,s.ns.space("inspiration"),e,p),d.add(g,s.ns.space("inspiration"),e,w),a.put(w,d.statementsMatching(void 0,void 0,void 0,w),"text/turtle",function(e,n,t){n?a.put(f,[],"text/turtle",function(e,n,t){n?console.info("Ok The tracker created OK at: "+g.uri+"\nMake a note of it, bookmark it. "):console.log("FAILED to set up new store at: "+f.uri+" : "+t)}):console.log("FAILED to save new tracker at: "+w.uri+" : "+t)})});return t.setAttribute("style","margin: 0.5em 1em;"),t}}},i={};function r(e){var n=i[e];if(void 0!==n)return n.exports;var t=i[e]={exports:{}};return s[e](t,t.exports,r),t.exports}r.n=e=>{var n=e&&e.__esModule?()=>e.default:()=>e;return r.d(n,{a:n}),n},r.d=(e,n)=>{for(var t in n)r.o(n,t)&&!r.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:n[t]})},r.o=(e,n)=>Object.prototype.hasOwnProperty.call(e,n),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var o={};r.r(o),r.d(o,{default:()=>w});var a=r(426),l=r(663),u=r(85),c=r(178),d=r(719),p=r(324),f=r(685),m=r(264);const h=l.store,w={icon:a.icons.iconBase+"noun_122196.svg",name:"issue",audience:[],label:function(e,n){const t=h.findTypeURIs(e);return t["http://www.w3.org/2005/01/wf/flow#Task"]||h.holds(e,a.ns.wf("tracker"))?"issue":t["http://www.w3.org/2005/01/wf/flow#Tracker"]?"tracker":null},mintClass:a.ns.wf("Tracker"),mintNew:async function(e,n){const t=e.session.store;let s;n.newInstance?s=t.sym(n.newInstance.doc().uri+"_state.ttl"):(n.newInstance=t.sym(n.newBase+"index.ttl#this"),s=t.sym(n.newBase+"state.ttl"));const i=n.newInstance,r=i.doc(),o=l.authn.currentUser();o&&t.add(i,a.ns.dc("author"),o,r),t.add(i,a.ns.rdf("type"),a.ns.wf("Tracker"),r),t.add(i,a.ns.dc("created"),new Date,r),t.add(i,a.ns.wf("issueClass"),a.ns.wf("Task"),r),t.add(i,a.ns.wf("initialState"),a.ns.wf("Open"),r),t.add(i,a.ns.wf("stateStore"),s,r),t.add(i,a.ns.wf("assigneeClass"),a.ns.foaf("Person"),r),t.add(i,a.ns.wf("stateStore"),s,s);const u=t.statementsMatching(void 0,void 0,void 0,r).concat(t.statementsMatching(void 0,void 0,void 0,s));try{await async function(e,n){const s=e.concat(n).map(e=>e.why),i=Array.from(new Set(s)).map(s=>t.updater.update(e.filter(e=>e.why.sameTerm(s)),n.filter(e=>e.why.sameTerm(s))));return Promise.all(i)}([],u)}catch(n){return a.widgets.complain(e,"Error writing tracker configuration: "+n)}const c=e.dom;return n.div.appendChild(c.createElement("div")).innerHTML=`<h4>Success</h4>\n <p>Your <a href="${i.uri}">new tracker</a> has been made.\n Use the settings tab to configure it.\n </p>\n `,n},render:function(e,n){const t=n.dom,s=t.createElement("div");function i(e){console.warn(e),s.appendChild(a.widgets.errorMessageBlock(t,e))}function o(e,n){e||i(n)}function w(e,s){const r=h.any(e,a.ns.wf("issueClass")),o=(s=s||r).sameTerm(r),l=h.any(s,a.ns.owl("disjointUnionOf"));if(!l)return i(`Configuration error: state ${r} does not have substates`);let d=l.elements;o&&d.length>2&&(d=d.filter(e=>h.holds(e,a.ns.rdfs("subClassOf"),a.ns.wf("Open"))||e.sameTerm(a.ns.wf("Open"))));const p={columnDropHandler:async function(e,t){const i=(0,c.getState)(e,s),r=h.the(e,a.ns.wf("tracker"),null,e.doc()),o=h.any(r,a.ns.wf("stateStore"));if(!t.sameTerm(i)){try{await h.updater.update([m.st(e,a.ns.rdf("type"),i,o)],[m.st(e,a.ns.rdf("type"),t,o)])}catch(e){a.widgets.complain(n,"Unable to change issue state: "+e)}f.refresh()}},filter:o?null:function(e){return!!h.findTypeURIs(e)[a.ns.wf("Open").uri]}};p.sortBy=a.ns.dct("created"),p.sortReverse=!0;const f=(0,u.board)(t,d,function(e){return(0,c.renderIssueCard)(e,n)},p);return f}function g(e){const s=t.createElement("div"),i=l.authn.currentUser(),r={div:s,dom:t,noun:"tracker",statusArea:s,me:i,refreshTarget:e},o=[n.session.paneRegistry.byName("issue")];return a.create.newThingUI(r,n,o),s}function y(){const s=h.any(x,a.ns.wf("issueClass")),i=[k,C,s].concat(h.each(x,a.ns.wf("issueCategory")));i.push(F);const r={renderMain:function(s,i){if(s.innerHTML="",i.sameTerm(b))s.appendChild(w(x));else if(i.sameTerm(C))s.appendChild(function(s){function i(){const e=new m.IndexedFormula;return u.pat.optional.push(e),e}const r=h.any(e,a.ns.wf("issueClass")),o=h.each(s,a.ns.wf("issueCategory")),l=["issue","state","created"],u=new m.Query(a.utils.label(e));for(let e=0;e<o.length;e++)l.push("_cat_"+e);const d={};l.forEach(function(e){u.vars.push(d[e]=m.variable(e))}),u.pat.add(d.issue,a.ns.wf("tracker"),s),u.pat.add(d.issue,a.ns.dct("created"),d.created),u.pat.add(d.issue,a.ns.rdf("type"),d.state),u.pat.add(d.state,a.ns.rdfs("subClassOf"),r),u.pat.optional=[];for(let e=0;e<o.length;e++){const n=i();n.add(d.issue,a.ns.rdf("type"),d["_cat_"+e]),n.add(d["_cat_"+e],a.ns.rdfs("subClassOf"),o[e])}const p=h.any(s,a.ns.wf("propertyList"));if(p){const e=p.elements;for(let n=0;n<e.length;n++){const t=e[n];let s="_prop_"+n;t.uri.indexOf("#")>=0&&(s=t.uri.split("#")[1]);const r=i();u.vars.push(d[s]=m.variable(s)),r.add(d.issue,t,d[s])}}const f={};h.each(void 0,a.ns.rdfs("subClassOf"),r).forEach(function(e){(h.holds(e,a.ns.rdfs("subClassOf"),a.ns.wf("Open"))||e.sameTerm(a.ns.wf("Open")))&&(f[e.uri]=!0)});const w=(0,a.table)(t,{query:u,keyVariable:"?issue",sortBy:"?created",sortReverse:!0,hints:{"?issue":{linkFunction:function(e){const t=m.sym(e);(0,c.exposeOverlay)(t,n)},label:"Title"},"?created":{cellFormat:"shortDate"},"?state":{initialSelection:f,label:"Status"}}}),g=h.any(e,a.ns.wf("stateStore"));return w.appendChild(function(e,n){return a.widgets.button(t,a.icons.iconBase+"noun_479395.svg","refresh table",async t=>{try{await h.fetcher.load(e,{force:!0,clearPreviousData:!0})}catch(e){return void alert(e)}a.widgets.refreshTree(n)})}(g,w)),w}(x));else if(i.sameTerm(F))s.appendChild(function(e){const n=t.createElement("div");n.appendChild((0,f.csvButton)(t,e));const s=h.any(e,a.ns.wf("issueClass")),i=[C,s].concat(h.each(e,a.ns.wf("issueCategory"))),r=n.appendChild(t.createElement("div"));a.widgets.renderNameValuePair(t,h,r,null,"Default view").appendChild(a.widgets.makeSelectForOptions(t,h,e,a.ns.wf("defaultView"),i,{},e.doc()));const l={dom:t,div:n,noun:"tracker"};return a.login.registrationControl(l,e,a.ns.wf("Tracker")).then(s=>{const i=a.ns.wf("TrackerSettingsForm");m.parse('@prefix : <http://www.w3.org/ns/ui#> .\n@prefix core: <http://www.w3.org/2005/01/wf/flow#>.\n@prefix dct: <http://purl.org/dc/terms/>.\n@prefix owl: <http://www.w3.org/2002/07/owl#>.\n@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.\n@prefix ui: <http://www.w3.org/ns/ui#> .\n@prefix vcard: <http://www.w3.org/2006/vcard/ns#>.\n@prefix wf: <http://www.w3.org/2005/01/wf/flow#> .\n\n core:TrackerSettingsForm a :Form;\n <http://purl.org/dc/elements/1.1/title> "Tracker Configuration Form";\n :parts (\n\n [ a ui:Heading; ui:contents "About the tracker"@en ]\n\n [ a :SingleLineTextField;\n :label "Title of issue tracker";\n :maxLength "128";\n :property dct:title;\n :size "40" ]\n\n [ a :MultiLineTextField; :label "Description"; :property wf:description; :size "40" ]\n\n [ a ui:Choice; ui:canMintNew true; ui:use core:SuperClassForm; ui:follow true;\n ui:property wf:issueClass;\n ui:label "What states can an issue be in?";\n ui:from rdfs:Class;\n ui:default wf:Task ]\n\n [ a ui:Comment; ui:contents """You can optionally sort issues using (one or more) classification systems"""@en ]\n\n\n [ a ui:Multiple; ui:canMintNew true; ui:part core:ClassificationForm;\n ui:property wf:issueCategory; ui:label "Sort them into which category?"; ui:from rdfs:Class ]\n\n [ a :BooleanField;\n :label "Allow issues to have sub-issues";\n :property wf:allowSubIssues;\n :default false ]\n\n [ a ui:Heading; ui:contents "Table view:"@en ]\n\n [ a ui:Comment; ui:contents "Any extra properties to include?"@en ]\n\n\n [a ui:Multiple; ui:property wf:propertyList; ui:ordered true; ui:part core:PropertyForm; ui:follow true ]\n\n [ a ui:Heading; ui:contents "Details of issues"@en ]\n\n # Use a people picker ideally\n [ a ui:Choice; ui:canMintNew true; ui:use core:GroupForm;\n ui:property wf:assigneeGroup;\n ui:label "Assign issues to people from which group?";\n ui:from vcard:Group;\n ]\n\n # Optionally one form for extras\n\n [ a ui:Choice; ui:canMintNew true; ui:use ui:FormForm;\n ui:property wf:extrasEntryForm;\n ui:label "Other things to save about each issue?";\n ui:from ui:Form;\n ]\n\n\n ) .\n\n # Form for the superclass of all states\n # @@ also We must require each state class to be stated to be a subclass of EITHER Open OR Closed.\n core:SuperClassForm a ui:Form; dct:title "Form for managing states";\n ui:parts (\n [ a :SingleLineTextField;\n :label "Name of set of states";\n :defualt "States";\n :maxLength "128";\n :property rdfs:label;\n :size "40" ]\n [a ui:Multiple; ui:property owl:disjointUnionOf; ui:ordered true; ui:part core:StateForm ]\n # [ a ui:Multiple; ui:property rdfs:subClassOf; ui:reverse true; ui:part core:StateForm ]\n ) .\n\n core:StateForm a ui:Form; dct:title "Form for one state";\n ui:parts (\n [ a :SingleLineTextField;\n :label "Name of state";\n :maxLength "128";\n :property rdfs:label;\n :size "40" ]\n [ a :ColorField; :label "Background color"; :property :backgroundColor ]\n # @@ add icon for state\n\n ).\n\n\n # Form for Classification\n\n core:ClassificationForm a ui:Form; dct:title "Form for a classification by categpry";\n ui:parts (\n [ a :SingleLineTextField;\n :label "Name of classification:";\n :maxLength "128";\n :property rdfs:label;\n :size "40" ]\n [a ui:Multiple; ui:property owl:disjointUnionOf; ui:ordered true; ui:part core:CategoryForm ]\n ) .\n\n core:CategoryForm a ui:Form; dct:title "Form for a category";\n ui:parts (\n [ a :SingleLineTextField;\n :label "Name of category";\n :maxLength "128";\n :property rdfs:label;\n :size "40" ]\n [ a :ColorField; :label "Background color"; :property :backgroundColor ]\n\n ).\n\n core:PropertyForm a ui:Form; ui:parts ( # Internded for raed only only marking the\n [ a :SingleLineTextField;\n :label "(property name)";\n :maxLength "128";\n :property rdfs:label;\n :size "40" ]\n ).\n\n\n # Other ontology stuff we are otherwis missing\n\n # we can usde ui:label to give a decent abel when the ontology uses a really bad one\n rdfs:subClassOf ui:label "super class" .\n # We can also add a specific nice label for the inverse\n [] owl:inverse rdfs:subClassOf; rdfs:label "sub class" .\n owl:disjointUnionOf ui:label "option" .\n\n # Form for new group\n\n\n core:GroupForm a ui:Form; dct:title "Form for new contacts group"; ui:parts (\n [ a :SingleLineTextField;\n :label "Name of new group";\n :maxLength "128";\n :property vcard:fn;\n :size "60" ]\n\n [ a ui:Heading; ui:contents "Members of group"@en ]\n\n [ a ui:Multiple; ui:label "contacts in group"; ui:property vcard:member; ui:part core:PersonForm ]\n\n ).\n\n core:PersonForm a ui:Form; dct:title "New contact details form"; ui:parts (\n\n [ a :NamedNodeURIField; ui:label "Solid ID"; ui:property owl:sameAs; ui:size 60 ]\n\n [ a :SingleLineTextField;\n :label "Name of contact";\n :maxLength "128";\n :property vcard:fn;\n :size "60" ]\n\n [ a ui:PhoneField; :label "Phone"; :property vcard:phone; ] # @@ check property]\n\n [ a :EmailField; :label "Email"; :property vcard:email ] # @@ check property\n\n ).\n\n# classificattion owl:disjointUnionOf ()\n wf:Tracker :creationForm core:SettingsForm .\n',h,i.doc().uri,"text/turtle"),a.widgets.appendForm(t,n,{},e,i,e.doc(),o)}),n}(x));else if(i.sameTerm(k))s.appendChild(function(e){const n=t.createElement("div"),s={dom:t,div:n,noun:"tracker"};return a.login.registrationList(s,{public:!0,private:!0,type:e}).then(e=>{n.appendChild(g(n))}),n}(a.ns.wf("Tracker")));else{if(!h.holds(x,a.ns.wf("issueCategory"),i)&&!h.holds(x,a.ns.wf("issueClass"),i))throw new Error("Unexpected tab type: "+i);s.appendChild(w(x,i))}},items:i,selectedTab:h.any(x,a.ns.wf("defaultView"),null,x.doc())||C},l=k.doc();return h.add(k,a.ns.rdfs("label"),"My Trackers",l),h.add(F,a.ns.rdfs("label"),"Settings",l),h.add(s,a.ns.rdfs("label"),"By State",l),a.tabs.tabWidget(r)}n.paneDiv=s,s.setAttribute("class","issuePane");const b=a.ns.wf("BoardView"),C=a.ns.wf("TableView"),F=a.ns.wf("SettingsView"),k=a.ns.wf("InstancesView"),v=h.updater,T=h.findTypeURIs(e);let x;const S=a.ns.wf("").doc();h.holds(void 0,void 0,void 0,S)||m.parse(r(240),h,S.uri,"text/turtle");const P=a.ns.ui("").doc();let O;h.holds(void 0,void 0,void 0,P)||m.parse(r(197),h,P.uri,"text/turtle"),T["http://www.w3.org/2005/01/wf/flow#Task"]||h.holds(e,a.ns.wf("tracker"))?async function(){if(x=h.any(e,a.ns.wf("tracker")),!x)throw new Error("This issue "+e+"has no tracker");try{await n.session.store.fetcher.load(x.doc())}catch(e){return i("Failed to load tracker config "+x.doc()+": "+e)}const t=h.any(x,a.ns.wf("stateStore"));if(!t)return i("Tracker has no state store: "+x);try{await n.session.store.fetcher.load(e)}catch(e){return i("Failed to load issue state "+t+": "+e)}s.appendChild((0,c.renderIssue)(e,n)),v.addDownstreamChangeListener(t,function(){a.widgets.refreshTree(s)})}().then(()=>console.log("Single issue rendered")):T["http://www.w3.org/2005/01/wf/flow#Tracker"]?async function(){function i(e){a.widgets.refreshTree(s),(0,c.exposeOverlay)(e,n),f.disabled=!1}x=e;try{await async function(e,n){async function t(n){const t=e.any(n,a.ns.owl("disjointUnionOf"),null,s);if(!t)throw new Error(`Classification ${n} has no disjointUnionOf`);if(!t.elements)throw new Error(`Classification ${n} has no array`);const i=new Set(t.elements.map(e=>e.uri)),r=new Set(e.each(null,a.ns.rdfs("subClassOf"),n,s).map(e=>e.uri)),o=[...r].filter(e=>!i.has(e)).map(t=>({action:"delete",st:m.st(e.sym(t),a.ns.rdfs("subClassOf"),n,s)})),l=[...i].filter(e=>!r.has(e)).map(t=>({action:"insert",st:m.st(e.sym(t),a.ns.rdfs("subClassOf"),n,s)}));return o.concat(l)}const s=n.doc(),i=e.any(n,a.ns.wf("issueClass")),r=e.each(n,a.ns.wf("issueCategory")).concat([i]);let o=[];for(const e of r)o=o.concat(await t(e));if(o.length){const n=o.filter(e=>"insert"===e.action).map(e=>e.st),t=o.filter(e=>"delete"===e.action).map(e=>e.st);console.log("Damage:",o),confirm(`Fix ${o} inconsistent subclasses in tracker config?`)&&await e.updater.update(t,n)}}(h,x)}catch(e){console.log("@@@ Error fixing subclasses in config: "+e)}const r=h.any(e,a.ns.wf("issueClass"));if(!r)throw new Error("This tracker has no issueClass");const o=h.any(e,a.ns.wf("stateStore"));if(!o)throw new Error("This tracker has no stateStore");const l=t.createElement("h2");l.setAttribute("style","font-size: 150%"),s.appendChild(l);const u=a.utils.label(r);l.appendChild(t.createTextNode(u+" list"));const f=t.createElement("button"),w=t.createElement("div");f.setAttribute("type","button"),f.setAttribute("style","padding: 0.3em; font-size: 100%; margin: 0.5em;"),w.appendChild(f),s.appendChild(w);const g=t.createElement("img");g.setAttribute("src",a.icons.iconBase+"noun_19460_green.svg"),g.setAttribute("style","width: 1em; height: 1em; margin: 0.2em;"),f.appendChild(g);const b=t.createElement("span");b.innerHTML="New "+u,f.appendChild(b),f.addEventListener("click",function(e){f.disabled=!0,w.appendChild((0,p.newIssueForm)(t,h,x,null,i))},!1),n.session.store.fetcher.load([o]).then(function(t){const i=y();s.appendChild(i),i.refresh||console.log("No table refresh function?!"),s.appendChild((0,d.newTrackerButton)(e,n)),v.addDownstreamChangeListener(o,i.refresh)}).catch(function(e){return console.log("Cannot load state store: "+e)})}().then(()=>console.log("Tracker rendered")):console.log("Error: Issue pane: No evidence that "+e+" is either a bug or a tracker.");const M=s.appendChild(t.createElement("div"));return n.overlay=M,M.style="position: fixed; z-index: 100; top: 1.51em; right: 2em; left: 2em; bottom:1.5em; border: 0.1em grey; overflow: scroll;",M.style.visibility="hidden",l.authn.checkUser().then(e=>{if(e)return console.log("Web ID set already: "+e),void(n.me=e);O=a.login.loginStatusBox(t,e=>{e?(n.me=h.sym(e),console.log("Web ID set from login button: "+e),s.removeChild(O)):n.me=null}),O.setAttribute("style","margin: 0.5em 1em;"),s.appendChild(O),n.statusArea||(n.statusArea=s.appendChild(t.createElement("div")))}),s}};return o})());
|
|
20520
|
+
!function(e,n){ true?module.exports=n(__webpack_require__(500),__webpack_require__(9332),__webpack_require__(8230)):0}(this,(e,n,t)=>(()=>{"use strict";var s={85(e,n,t){t.d(n,{board:()=>o});var s=t(426),i=t(663),r=t(264);function o(e,n,t,o){const a=e.createElement("div");a.style="width: 100%;",a.style.margin="1em";const l=a.appendChild(e.createElement("table"));l.style="width: 100%;",l.style.borderCollapse="collapse";const u=l.appendChild(e.createElement("tr")),c=l.appendChild(e.createElement("tr"));function d(n,t){const r=e.createElement("div"),o=r.appendChild(e.createElement("table")),a=i.store.each(n,s.ns.rdf("type")).map(e=>i.store.any(e,s.ns.ui("backgroundColor"))).filter(e=>e);o.appendChild(s.widgets.personTR(e,null,n)),o.subject=n,o.style="margin: 1em;";const l=a[0]||i.store.any(t,s.ns.ui("backgroundColor"));return r.style.backgroundColor=l?l.value:"#fff",r}function p(e,n,t,s){const r=e.map(e=>[i.store.any(e,n)||t,e]);return r.sort(),s&&r.reverse(),r.map(e=>e[1])}return n.forEach(n=>{const t=u.appendChild(e.createElement("th"));t.textContent=s.utils.label(n,!0),t.subject=n,t.style="margin: 0.3em; padding: 0.5em 1em; font-treatment: bold; font-size: 120%;";const r=c.appendChild(e.createElement("td"));r.subject=n,r.style="border: 0.01em solid white; padding: 0.1em;",o.columnDropHandler&&s.widgets.makeDropTarget(r,function(e){e.forEach(function(e){console.log("Dropped on column: "+e);const t=i.store.sym(e);o.columnDropHandler(t,n)})})}),a.refresh=function(){const e=new r.Literal(new Date),n=t||o.renderItem||d;function a(e){const t=n(e);return s.widgets.makeDraggable(t,e),t.subject=e,t}for(let n=c.firstChild;n;n=n.nextSibling){const t=n.subject;let r=i.store.each(null,s.ns.rdf("type"),t);const l=o.sortBy||s.ns.dct("created");o.filter&&(r=r.filter(o.filter));const u=p(r,l,e,!0);s.utils.syncTableToArrayReOrdered(n,u,a)}},a.refresh(),a}},685(e,n,t){t.d(n,{csvButton:()=>o});var s=t(426),i=t(663);function r(e){const n=e.replaceAll("\n"," ");if(!n.includes(","))return n;const t='"'+n.replaceAll('"','""')+'"';if(console.log("Quoted: >>>"+t+"<<<"),t.slice(1,-1).replaceAll('""',"").includes('"'))throw new Error("CSV inconsistecy");return t}function o(e,n){const t=e.createElement("div"),o=s.widgets.button(e,s.icons.iconBase+"noun_Document_998605.svg","Copy as CSV",async e=>{const t=o.parentNode.parentNode;console.log("button gparent div",t),t.addEventListener("copy",e=>{const t=function(e,n){const t=e.any(n,s.ns.wf("stateStore")),i=e.each(null,s.ns.wf("tracker"),n,t);console.log(" CSV: Tasks:",i.length);const o=[{label:"Name",predicate:s.ns.dc("title")}],a=e.any(n,s.ns.wf("issueClass"));console.log(" CSV: States - main superclass:",a);const l={label:"State",category:a};console.log(" CSV: found column from state",l),o.push(l);const u=e.each(n,s.ns.wf("issueCategory"));console.log(" CSV: Categories : ",u),console.log(" CSV: Categories : length: ",u.length),console.log(" CSV: Categories : first: ",u[0]);const c=u;for(const e of c){const n={label:s.utils.label(e),category:e};console.log(" CSV: found column from classifications",n),o.push(n)}const d=e.any(n,s.ns.wf("extrasEntryForm"),null,null);if(console.log(" CSV: Form : ",d),d){const n=e.any(d,s.ns.ui("parts"),null,d.doc());console.log(" CSV: parts : ",n);const t=n.elements;console.log(" CSV: fields : ",t);for(const n of t){const t=e.any(n,s.ns.ui("property"));if(t){const e={label:s.utils.label(t),predicate:t};console.log(" CSV: found column from form",e),o.push(e)}}}o.push({label:"Description",predicate:s.ns.wf("description")}),console.log("Columns: ",o.length);const p=o.map(e=>e.label).join(",")+"\n";return console.log("CSV: Header= ",p),p+i.map(function(n){return o.map(t=>function(n,t){let i;if(t.predicate)return i=e.any(n,t.predicate),i?i.value:"--";if(!t.category)throw new Error("wot no pred or cat",t);{const r=e.each(n,s.ns.rdf("type"));for(const n of r)e.holds(n,s.ns.rdfs("subClassOf"),t.category)&&(i=n);if(!i)return"?"+s.utils.label(t.category)}return s.utils.label(i)}(n,t)).map(r).join(",")+"\n"}).join("")}(i.store,n);e.clipboardData.setData("text/plain",t),e.clipboardData.setData("text/csv",t),alert("Copy data: "+t),e.preventDefault()})});return t.appendChild(o),t}},178(e,n,t){t.d(n,{exposeOverlay:()=>f,getState:()=>c,renderIssue:()=>h,renderIssueCard:()=>p});var s=t(426),i=t(663),r=t(324),o=t(264);const a=i.store,l=s.icons.iconBase+"noun_17020_gray-tick.svg",u=(s.icons.iconBase,s.icons.iconBase+"noun_17020.svg");function c(e,n){const t=a.the(e,s.ns.wf("tracker"),null,e.doc()),i=a.any(t,s.ns.wf("issueClass"));n=n||i;const r=a.each(e,s.ns.rdf("type")).filter(e=>a.holds(e,s.ns.rdfs("subClassOf"),n));if(1!==r.length)throw new Error("Issue must have one type as state: "+r.length);return r[0]}function d(e){const n=a.each(e,s.ns.rdf("type")).map(e=>a.any(e,s.ns.ui("backgroundColor"))).filter(e=>!!e);return n.length?n[0].value:null}function p(e,n){function t(){const n=d(e)||"white";o.style.backgroundColor=n,c.style.backgroundColor=n}const i=n.dom,r=!d(e),o=i.createElement("div"),l=o.appendChild(i.createElement("table"));l.style.width="100%",l.appendChild(s.widgets.personTR(i,null,e,{draggable:!1})),l.subject=e,o.style="border-radius: 0.4em; border: 0.05em solid grey; margin: 0.3em;",o.firstChild.firstChild.firstChild.firstChild.setAttribute("src",s.icons.iconBase+"noun_Danger_1259514.svg");const u=o.firstChild.firstChild.children[2],c=s.widgets.button(i,s.icons.iconBase+"noun_253504.svg","edit",async t=>{f(e,n)}),p=c.firstChild;if(p.style.width=p.style.height="1.5em",u.appendChild(c),r){const t=s.widgets.deleteButtonWithCheck(i,u,"issue",async function(){try{await a.updater.update(a.connectedStatements(e))}catch(e){!function(e,n){console.warn(e),n.paneDiv.appendChild(s.widgets.errorMessageBlock(n.dom,e))}(`Unable to delete issue: ${e}`,n)}console.log("User deleted issue "+e),o.parentNode.removeChild(o),s.widgets.refreshTree(n.paneDiv)});u.appendChild(t)}return o.style.maxWidth="24em",o.refresh=t,t(),o}function f(e,n){const t=n.overlay;t.innerHTML="";const i=t.appendChild(s.widgets.button(n.dom,s.icons.iconBase+"noun_1180156.svg","close",function(){t.innerHTML="",t.style.visibility="hidden"}));i.style.float="right",i.style.margin="0.7em",delete i.style.backgroundColor,t.style.visibility="visible",t.appendChild(h(e,n)),t.firstChild.style.overflow="auto"}function m(e,n){const t=e.createElement("div");return t.setAttribute("style","height: 1em; margin: 0.5em;"),t.style.backgroundColor=n,t}function h(e,n){function t(e,n){const t=f.createElement("pre");return t.setAttribute("style",n||"color: grey"),y.appendChild(t),t.appendChild(f.createTextNode(e)),t}function c(e){console.warn(e),y.appendChild(s.widgets.errorMessageBlock(f,e))}function p(e,n){e||c("Sorry, failed to save your change:\n"+n)}const f=n.dom,h=a.the(e,s.ns.wf("tracker"),null,e.doc());if(!h)throw new Error("No tracker");const w=a.any(h,s.ns.wf("stateStore")),g=e.doc(),y=f.createElement("div"),b=(i.authn.currentUser(),d(e)||"white");!function(){const n="padding: 0.5em 1.5em 1em 1.5em; border: 0.7em;border-color: "+(d(e)||"#eee")+"; ";y.setAttribute("style",n),y.style.backgroundColor="white"}(),i.authn.checkUser();const C=y.appendChild(s.widgets.button(f,function(e){return function(e){return!!a.findTypeURIs(e)[s.ns.wf("Open").uri]}(e)?l:u}(e)));s.widgets.makeDraggable(C,e);const F=a.any(h,s.ns.wf("issueClass"));if(!F)throw new Error("This tracker "+h+" has no issueClass");const k=s.widgets.makeSelectForCategory(f,a,e,F,w,function(e,n){e?s.widgets.refreshTree(y):console.log("Failed to change state:\n"+n)});y.appendChild(k);const v=a.each(h,s.ns.wf("issueCategory"));for(const n of v)y.appendChild(s.widgets.makeSelectForCategory(f,a,e,n,w,function(e,n){e?s.widgets.refreshTree(y):console.log("Failed to change category:\n"+n)}));const T=f.createElement("a");T.setAttribute("href",h.uri),T.setAttribute("style","float:right"),y.appendChild(T).textContent=s.utils.label(h),T.addEventListener("click",s.widgets.openHrefInOutlineMode,!0);const x=s.ns.wf("coreIsueForm");o.parse('\n @prefix : <http://www.w3.org/ns/ui#> .\n @prefix core: <http://www.w3.org/2005/01/wf/flow#>.\n @prefix dc: <http://purl.org/dc/elements/1.1/>.\n @prefix wf: <http://www.w3.org/2005/01/wf/flow#> .\n\n core:coreIsueForm a :Form;\n <http://purl.org/dc/elements/1.1/title> "Core issue data";\n :parts (\n core:titleField\n core:descriptionField ) .\n\n core:descriptionField a :MultiLineTextField;\n :label "Description";\n :property wf:description;\n :size "40" .\n\n core:titleField a :SingleLineTextField;\n :label "Title";\n :maxLength "128";\n :property dc:title; # @@ Should move to dct or schema\n :size "40" .\n\n wf:Task :creationForm core:coreIsueForm .\n',a,x.doc().uri,"text/turtle");const S=s.widgets.appendForm(f,null,{},e,x,w,p);y.appendChild(S),S.style.backgroundColor=b;const P=a.statementsMatching(e,s.ns.wf("assignee"));if(P.length>1){t("Weird, was assigned to more than one person. Fixing ..");const e=P.slice(1);a.updater.update(e,[],function(e,n,s){n?t("Now fixed."):c("Fixed failed: "+s)})}function O(e){return s.widgets.personTR(f,s.ns.wf("dependent"),e,{link:!1})}function M(e,n){n=n||[];const t=a.any(null,s.ns.wf("dependent"),e,e.doc());return t?M(t,[t].concat(n)):n}if(async function(){const n=a.each(e,s.ns.wf("assigneeGroup"));await a.fetcher.load(n);const t=n.map(e=>a.each(e,s.ns.vcard("member"),null,e.doc())).flat(),i=a.any(null,s.ns.doap("bug-database"),h);i&&await a.fetcher.load(i);const r=i?a.each(i,s.ns.doap("developer")):[];return t.concat(r)}().then(n=>{if(n.length){n.forEach(function(e){a.fetcher.lookUpThing(e)});const t={nullLabel:"(unassigned)"};y.appendChild(s.widgets.makeSelectForOptions(f,a,e,s.ns.wf("assignee"),n,t,g,function(e,n){e||console.log("Failed to change assignee:\n"+n)}))}}),function(e,n){const t=a.any(e,s.ns.ui(n));return!(!t||!t.value)}(h,"allowSubIssues")){const n=y.appendChild(f.createElement("div"));n.style="margin: 1em; padding: 1em;",n.appendChild(f.createElement("h4")).textContent="Super Issues";const t=n.appendChild(f.createElement("div"));t.style.display="flex",t.refresh=function(){const n=M(e);s.utils.syncTableToArrayReOrdered(t,n,O)},t.refresh(),n.appendChild(f.createElement("h4")).textContent="Sub Issues";const i=n.appendChild(f.createElement("div"));i.style.display="flex",i.style.flexDirection="reverse",i.refresh=function(){const n=a.each(e,s.ns.wf("dependent"),null,e.doc());s.utils.syncTableToArrayReOrdered(i,n,O)},i.refresh();const o=f.createElement("button");o.setAttribute("type","button"),n.appendChild(o);const l=s.utils.label(F);o.innerHTML="New sub "+l,o.setAttribute("style","float: right; margin: 0.5em 1em;"),o.addEventListener("click",function(t){n.insertBefore((0,r.newIssueForm)(f,a,h,e,i.refresh),o.nextSibling)},!1)}y.appendChild(f.createElement("br"));const A=a.any(h,s.ns.wf("extrasEntryForm"));A&&s.widgets.appendForm(f,y,{},e,A,w,p);const D=y.appendChild(m(f,b));let E;a.anyValue(h,s.ns.wf("issueURITemplate"))?E=e.doc():(E=a.any(h,s.ns.wf("messageStore")),E||(E=a.any(h,s.ns.wf("stateStore"))),a.sym(E.uri+"#Chat"+(new Date).getTime())),a.fetcher.nowOrWhenFetched(E,function(n,t,i){if(n){const n=(0,s.messageArea)(f,a,e,E);y.insertBefore(n,D),y.insertBefore(m(f,b),n)}else{const e=f.createElement("p");e.textContent=t,y.insertBefore(e,D)}}),y.appendChild(f.createElement("div")).innerHTML="<h4>Attachments</h4>\n <p>Drag files, emails,\n web pages onto the paper clip, or click the file upload button.</p>";const I=e.uri.endsWith("/index.ttl#this")?e.uri.slice(0,14)+"Files/":e.dir().uri+"Files/"+e.uri.split("#")[1]+"/";s.widgets.attachmentList(f,e,y,{doc:w,promptIcon:s.icons.iconBase+"noun_25830.svg",uploadFolder:a.sym(I),predicate:s.ns.wf("attachment")}),s.widgets.deleteButtonWithCheck(f,y,"issue",async function(){try{await a.updater.update(a.connectedStatements(e))}catch(e){c(`Unable to delete issue: ${e}`)}c("DELETED OK"),y.style.backgroundColor="#eee",y.style.fontColor="orange"}).style.float="right";const L=f.createElement("button");return L.textContent="refresh messages",L.addEventListener("click",async function(e){try{await a.fetcher.load(E,{force:!0,clearPreviousData:!0})}catch(e){return void alert(e)}s.widgets.refreshTree(y)},!1),L.setAttribute("style",s.style.button),y.appendChild(L),y}},324(e,n,t){t.d(n,{newIssueForm:()=>r});var s=t(426),i=t(264);function r(e,n,t,r,o){const a=e.createElement("div"),l=n.any(t,s.ns.wf("stateStore")),u=n.any(t,s.ns.wf("issueClass")),c=s.utils.label(u);a.innerHTML="<h2>Add new "+(r?"sub ":"")+c+"</h2><p>Title of new "+c+":</p>";const d=e.createElement("input");return d.setAttribute("type","text"),d.setAttribute("style","margin: 0.5em; font-size: 100%; padding: 0.3em;"),d.setAttribute("size","100"),d.setAttribute("maxLength","2048"),d.select(),d.addEventListener("keyup",function(e){13===e.keyCode&&function(){d.setAttribute("class","pendingedit"),d.disabled=!0;const e=[],u=n.anyValue(t,s.ns.wf("issueURITemplate")),c=u?n.sym(function(e){const n=new i.Literal(new Date),t=""+(new Date).getTime(),s=n.value.slice(0,4),r=n.value.slice(5,7),o=n.value.slice(8,10);return e.replace("{N}",t).replace("{YYYY}",s).replace("{MM}",r).replace("{DD}",o)}(i.uri.join(u,l.uri))):n.sym(l.uri+"#Iss"+(new Date).getTime()),p=c.doc(),f=n.literal(d.value);e.push(new i.Statement(c,s.ns.wf("tracker"),t,l)),e.push(new i.Statement(c,s.ns.dc("title"),f,l)),e.push(new i.Statement(c,s.ns.dct("created"),new Date,l));const m=r?n.each(r,s.ns.rdf("type"),null,r.doc()):n.each(t,s.ns.wf("initialState"));for(const n of m)e.push(new i.Statement(c,s.ns.rdf("type"),n,l));r&&e.push(new i.Statement(r,s.ns.wf("dependent"),c,l)),u&&(e.push(new i.Statement(c,s.ns.wf("tracker"),t,p)),e.push(new i.Statement(c,s.ns.rdfs("seeAlso"),l,p))),n.updater.update([],e,function(e,n,t){n?(a.parentNode.removeChild(a),o(c)):console.log("Error: can't save new issue:"+t)})}()},!1),a.appendChild(d),d.focus(),a}},719(e,n,t){t.d(n,{newTrackerButton:()=>l});var s=t(426),i=t(264),r=t(663);const o=s.ns,a=r.store.updater;function l(e,n){const t=s.login.newAppInstance(n.dom,{noun:"tracker"},function(t,r){function l(e){if(void 0!==e.elements)return e.elements.map(l);if(void 0===e.uri)return e;let n=e.uri;return n===p.uri?f:(n.slice(0,h.length)===h&&(n=r+n.slice(h.length)),d.sym(n))}const u="issuetracker.w3.org",c=s.ns.space,d=n.session.store;if(!r&&("/"!==(r=d.any(t,c("uriPrefix")).value).slice(-1)&&(i.log.error(u+": No / at end of uriPrefix "+r),r+="/"),r+=u+"/"+(new Date).getTime()+"/",!confirm("Make new tracker at "+r+"?")))return;const p=d.any(e,o.wf("stateStore")),f=d.sym(r+"store.ttl"),m=e.doc(),h=m.uri.slice(0,m.uri.lastIndexOf("/")+1),w=l(m),g=l(e),y=d.statementsMatching(void 0,void 0,void 0,m);for(let e=0;e<y.length;e++){const n=y[e];d.add(l(n.subject),l(n.predicate),l(n.object),w)}d.add(g,s.ns.space("inspiration"),e,p),d.add(g,s.ns.space("inspiration"),e,w),a.put(w,d.statementsMatching(void 0,void 0,void 0,w),"text/turtle",function(e,n,t){n?a.put(f,[],"text/turtle",function(e,n,t){n?console.info("Ok The tracker created OK at: "+g.uri+"\nMake a note of it, bookmark it. "):console.log("FAILED to set up new store at: "+f.uri+" : "+t)}):console.log("FAILED to save new tracker at: "+w.uri+" : "+t)})});return t.setAttribute("style","margin: 0.5em 1em;"),t}},197(e){e.exports='# Ontology for user interface hints and forms\n#\n# See also related: the Fresnel language\n#\n@prefix contact: <http://www.w3.org/2000/10/swap/pim/contact#>.\n@prefix dc: <http://purl.org/dc/elements/1.1/>.\n@prefix doc: <http://www.w3.org/2000/10/swap/pim/doc#>.\n@prefix foaf: <http://xmlns.com/foaf/0.1/>.\n@prefix owl: <http://www.w3.org/2002/07/owl#>.\n@prefix r: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.\n@prefix s: <http://www.w3.org/2000/01/rdf-schema#>.\n@prefix tt: <http://dig.csail.mit.edu/2010/issues/track#>.\n@prefix ui: <http://www.w3.org/ns/ui#>.\n@prefix : <http://www.w3.org/ns/ui#>.\n@prefix wf: <http://www.w3.org/2005/01/wf/flow#>.\n@prefix xsd: <http://www.w3.org/2001/XMLSchema#>.\n\n@keywords is, of, a.\n\n<> dc:title "An ontology for User Interface description, Hints and Forms.";\n dc:description """The User Interface ontology allows the definition\n of forms for processing RDF model data, and include a bootstrap form for\n editing forms. It allows user interface hints such as background colors,\n can be associated with objects and classes.\n """;\n dc:created 2010-08-07;\n dc:license <https://creativecommons.org/publicdomain/zero/1.0/>;\n dc:modified """$Date: 2020/03/22 16:53:21 $""";\n dc:author <https://www.w3.org/People/Berners-Lee/card#i>.\n\nstyle a r:Property, owl:DatatypeProperty;\n s:label "style";\n prompt "CSS style";\n s:comment """Must be a valid CSS style string such as one could put in\n an HTML style attribute. Depending on the user interface system, this can\n by given to individuals, classes or properties. It is up to a user interface\n which wants to draw on them to pick how it uses styles from which parts\n of the data it has. For example, the style of a class may be picked\n to distinguish information about things in that class.""".\n\nbackgroundColor a r:Property, owl:DatatypeProperty;\n s:label "background color"@en;\n s:range ui:Color;\n s:comment """Must be a valid CSS color string such as one could put in\n an HTML style attribute. This should be in the #xxxxxx form,\n (with 6 digits of hex) so that it\n can work with Graphviz.""".\n\nbackgroundImage a r:Property, owl:DatatypeProperty;\n s:label "background image"@en;\n s:comment """URI or base64 representation of an image""".\n\ncolor a r:Property, owl:DatatypeProperty;\n s:label "color"@en;\n s:range ui:Color;\n s:comment """Must be a valid CSS color string such as one could put in\n an HTML style attribute. This should be in the #xxxxxx form,\n (with 6 digits of hex) so that it\n can work with Graphviz.""".\n\n\n\nsortPriority a r:Property, owl:DatatypeProperty;\n s:label "sort priority";\n s:range xsd:integer;\n s:comment """When individuals or classes must be sorted, then\n if they are given different values of sortPriority a user agent can\n use this as a hint to how to present information.""".\n\nsortBy a r:Property;\n s:label "sort by";\n s:domain s:Class;\n s:range r:Property;\n s:comment """A property which typically is used to sort\n members of a given class.""".\n\nseqeunce a r:Property;\n s:label "sequence number";\n s:range xsd:integer;\n s:comment """The sequence in which this item is arranged with repect to other parts.""".\n\ninitialProperties a r:Property;\n s:label "initial properties";\n s:domain s:Class;\n s:range r:List; # List of r:Property\n s:comment """A really simple way of enabling user interfaces to\n create new information about a class of things is to make a define of properties\n to be specified when a information about a new item\n ("New item" here means an item which the system\n does not have prvious information about yet,\n not an items which has just been created,\n like new friend as opposed to new baby)""";\n prompt "Properties to be specified for new ones".\n\ntableProperties a r:Property;\n s:domain s:Class;\n s:label "table properties";\n s:range r:List; # List of r:Property\n s:comment """This is a crude way of specifying a table-based\n view for objects of this class.""";\n prompt "Properties to be given in a default table view".\n\nprompt a r:Property;\n s:label "user prompt";\n s:comment """A string for the UI to use if the user needs a longer\n prompts than just a field name, the rdfs:label. """;\n ui:prompt "A longer prompt for a user inputting this property".\n\n\n# A Taxonomy of Field types\n\nui:Form owl:disjointUnionOf ( ui:ValueField ui:Group ui:Choice ui:Classifier ui:Options ui:Multiple ui:Heading ui:Comment);\n s:comment """A form can be any type of single field, or typically a Group of several fields,\n including interspersed headings and comments. """.\nui:Single owl:disjointUnionOf ( ui:ValueField ui:Group ui:Choice ui:Classifier ui:Options ui:Heading ui:Comment).\nui:ValueField owl:disjointUnionOf ( ui:TextField ui:NumericField ui:ColorField ui:DateField ui:DateTimeField ui:PhoneField ui:EmailField).\nui:NumericField owl:disjointUnionOf (ui:BooleanField ui:TriStateField ui:IntegerField ui:DecimalField ui:FloatField).\n# ui:Multiple owl:disjointUnionOf ( ui:ZeroOrMore ui:OneOrMore ).\nui:TextField owl:disjointUnionOf (ui:SingleLineTextField ui:MultiLineTextField).\n\nui:Form a s:Class; is s:subClassOf of ui:ValueField, ui:Group, ui:Choice, ui:Heading, ui:Comment, ui:Classifier, ui:Options, ui:Multiple.\nui:Single a s:Class; is s:subClassOf of ui:ValueField, ui:Group, ui:Choice, ui:Heading, ui:Comment, ui:Classifier, ui:Options.\nui:ValueField a s:Class; is s:subClassOf of ui:TextField, ui:NumericField, ui:ColorField, ui:DateField, ui:DateTimeField, ui:PhoneField, ui:EmailField.\nui:NumericField a s:Class; is s:subClassOf of ui:BooleanField, ui:TriStateField, ui:IntegerField, ui:DecimalField, ui:FloatField.\nui:TextField a s:Class; is s:subClassOf of ui:SingleLineTextField, ui:MultiLineTextField.\n\nui:Classifier a s:Class; s:label "classifier";\n s:comment """A classifier allows the user to select the type of an object.\n The possible types must be subclasses of some overall class, the "category".\n (Ideally, the superclass is also set up as the disjoint union of the subclasses,\n if they are disjoint.)\n\n The form normally stores the resulting classes using an rdf:type triple,\n but a different predicate can be used if required, so the classifier field\n needs is \'property\' defined too.\n\n If the subclass selected itself is has subclasses defined, the user can\n recursively select from them in turn, as many levels as needed.""".\n\nui:property a r:Property; s:domain ui:Form; s:range r:Property;\n s:label "property to be stored"@en;\n s:comment """Many fields prompt for information about a given property of the subject.\n When field is filled in, this gives which property is written into the data.""".\n\nui:category a r:Property; s:domain ui:Classifier; s:range s:Class;\n s:label "overall superclass"@en;\n s:comment """The superclass subclasses of which will be selected.""".\n\nui:dependingOn a r:Property; s:domain ui:Options; s:range r:Property;\n s:label "depending on"@en;\n s:comment """Many fields prompt for information about a given property of the subject""".\n\nui:for a r:Property; s:label "for"@en; s:comment "The value for which this case is selected.".\nui:use a r:Property; s:range ui:Form.\n\nui:part a r:Property; s:label "part"@en ; s:domain ui:Form; s:range ui:Form. # Used for Multiple field - the subform for each item\nui:parts a r:Property; s:label "parts"@en ; s:domain ui:Form; s:range r:Collection. # (of Forms) The ordered set of fields in a group\nui:ordered e r:Property; s:label "ordered"; s:range xsd:Boolean . # Could be useful for all kinds of things in future so not restricted to Multiple\n\nui:from a r:Property; s:domain ui:Choice; s:range r:Class;\n s:label "from"; ui:prompt "from what class".\n\nui:size a r:Property; s:domain ui:ValueField; s:range xsd:integer;\n s:label "size of field";\n ui:prompt "size of field in characters".\n\nui:maxLength a r:Property; s:domain ui:TextField; s:range xsd:integer;\n s:label "max length of value".\n\nui:minValue a r:Property; s:domain ui:ValueField; s:label "min". # @@ range?\nui:maxValue a r:Property; s:domain ui:ValueField; s:label "max".\n\n ui:creationForm a r:Property; s:domain s:Class; s:range ui:Form;\n s:label "creation form";\n s:comment """A form which may be used to collect information about a\n hitherto locally undocumented instance instance of this class.""".\n\n ui:annotationForm a r:Property; s:domain s:Class; s:range ui:Form;\n s:label "annotation form";\n s:comment """A form which may be used to add more infromation to an\ninstance of this class which we know something about. Anything from\nadding just add one more fact, to adding a whole lot of information about a specific\nfacet of the thing.\n""".\n\n\n#############################################\n#\n# Form for editing Forms\n#\n\nFormForm a ui:Form;\n dc:title "Form for editing Forms";\n is ui:creationForm of Form;\n a ui:Group; ui:parts (FF1 FF2 FF3 FieldList) .\n\n FF1 ui:sequence 1; a ui:Heading; ui:contents "Edit Form"@en .\n FF2 ui:sequence 2; a ui:SingleLineTextField; ui:property dc:title; ui:size 60 .\n FF3 ui:sequence 3; a ui:Comment; ui:contents\n """To add a field to the form, press the plus at the bottom,\n and then select what sort of field you want."""@en; ui:style "background-color: #ffe;" .\n\n FieldList ui:sequence 10; a ui:Multiple; ui:ordered true; ui:property ui:parts; ui:part FieldForm .\n\nFieldForm a ui:Group;\n dc:title "Form for selecting a type of field";\n ui:parts (\n\n [ ui:sequence 1; a ui:Classifier; ui:property r:type; ui:category ui:Form]\n\n [ a ui:Options; ui:sequence 2; ui:dependingOn r:type;\n\n ui:case [ ui:for ui:TextField; ui:use [a ui:Group; ui:parts (\n [ a ui:Choice; ui:canMintNew true; ui:property ui:property; ui:label "property"; ui:from owl:DatatypeProperty] # @@@ Needs inference on current web\n [ a ui:IntegerField; ui:property ui:size; ui:label "field size"; ui:min 1; ui:max 4096]\n [ a ui:IntegerField; ui:property ui:maxLength; ui:label "Max. length of string"; ui:min 1]\n )]];\n\n ui:case [ ui:for ui:IntegerField; ui:use [a ui:Group; ui:parts (\n [ ui:sequence 1; a ui:Choice; ui:canMintNew true; ui:property ui:property; ui:label "property"; ui:from owl:DatatypeProperty]\n [ ui:sequence 2; a ui:IntegerField; ui:property ui:min; ui:label "minimum value"]\n [ ui:sequence 3; a ui:IntegerField; ui:property ui:max; ui:label "maximum value"] ) ]];\n\n ui:case [ ui:for ui:DecimalField; ui:use [a ui:Group; ui:parts (\n [ ui:sequence 1; a ui:Choice; ui:canMintNew true; ui:property ui:property; ui:label "property"; ui:from owl:DatatypeProperty]\n [ ui:sequence 2; a ui:DecimalField; ui:property ui:min; ui:label "minimum value"]\n [ ui:sequence 3; a ui:DecimalField; ui:property ui:max; ui:label "maximum value"] ) ]];\n\n ui:case [ ui:for ui:FloatField; ui:use [a ui:Group; ui:parts (\n [ ui:sequence 1; a ui:Choice; ui:canMintNew true; ui:property ui:property; ui:label "property"; ui:from owl:DatatypeProperty]\n [ ui:sequence 2; a ui:FloatField; ui:property ui:min; ui:label "minimum value"]\n [ ui:sequence 3; a ui:FloatField; ui:property ui:max; ui:label "maximum value"] ) ]];\n\n ui:case [ ui:for ui:ColorField; ui:use [a ui:Group; ui:parts (\n [ ui:sequence 1; a ui:Choice; ui:canMintNew true; ui:property ui:property; ui:label "property"; ui:from owl:DatatypeProperty] )\n ]];\n\n ui:case [ ui:for ui:DateField; ui:use [a ui:Group; ui:parts (\n [ ui:sequence 1; a ui:Choice; ui:canMintNew true; ui:property ui:property; ui:label "property"; ui:from owl:DatatypeProperty]\n [ ui:sequence 2; a ui:DateField; ui:property ui:min; ui:label "min"]\n [ ui:sequence 3; a ui:DateField; ui:property ui:max ; ui:label "max"]\n ) ]];\n\n ui:case [ ui:for ui:DateTimeField; ui:use [a ui:Group; ui:parts (\n [ ui:sequence 1; a ui:Choice; ui:canMintNew true; ui:property ui:property; ui:label "property"; ui:from owl:DatatypeProperty]\n [ ui:sequence 2; a ui:DateTimeField; ui:property ui:min; ui:label "min"]\n [ ui:sequence 3; a ui:DateTimeField; ui:property ui:max ; ui:label "max"]\n ) ]];\n\n ui:case [ ui:for ui:EmailField; ui:use [a ui:Group; ui:parts (\n [ ui:sequence 1; a ui:Choice; ui:canMintNew true; ui:property ui:property; ui:label "property"; ui:from owl:ObjectProperty]\n ) ]];\n\n ui:case [ ui:for ui:PhoneField; ui:use [a ui:Group; ui:parts (\n [ ui:sequence 1; a ui:Choice; ui:canMintNew true; ui:property ui:property; ui:label "property"; ui:from owl:ObjectProperty]\n )]];\n\n ui:case [ ui:for ui:Group; ui:use FieldList];\n\n ui:case [ ui:for ui:Options; ui:use [a ui:Group; ui:parts (\n [ ui:sequence 1; a ui:Choice; ui:canMintNew true; ui:property ui:dependingOn; ui:label "depending on"; ui:from r:Property; ui:default r:type]\n [ ui:sequence 2; a ui:Multiple; ui:property ui:case; ui:part CaseForm]\n ) ]];\n\n ui:case [ ui:for ui:Choice; ui:use [a ui:Group; ui:parts (\n [ ui:sequence 1; a ui:Choice; ui:canMintNew true; ui:property ui:property; ui:label "property";\n ui:canMintNew true; ui:from owl:ObjectProperty]\n [ ui:sequence 2; a ui:Choice; ui:canMintNew true; ui:property ui:from; ui:label "destination class";\n ui:from s:Class; ui:canMintNew true; ]\n [ ui:sequence 3; a ui:BooleanField; ui:property ui:canMintNew; # No class form yet\n ui:label "user can add new"]\n [ ui:sequence 4; a ui:Choice; ui:canMintNew true; ui:property ui:use; ui:label "Nested Form (if any)";\n ui:from ui:Form; ui:optional true; ui:use FormForm] # @@ optional\n\n ) ]];\n\n ui:case [ ui:for ui:Classifier; ui:use [a ui:Group; ui:parts (\n [ ui:sequence 2; a ui:Comment; ui:contents """A classifier allows the user to which classes the item belongs to, given a common superclass of the allowed classes. Give the superclass here:""" ]\n\n [ ui:sequence 4; a ui:Choice; ui:canMintNew true; ui:property ui:category; ui:label "superclass"; ui:from s:Class]\n\n [ ui:sequence 6; a ui:Comment; ui:contents """(When the choice is made normally the item is given a rdf:type. Set this to rdf:type unless you want the form to set a different property.)""" ]\n\n [ ui:sequence 8; a ui:Choice; ui:canMintNew true; ui:property ui:property;\n ui:label "property"; ui:from owl:ObjectProperty; ui:default r:type] # @@ restriction\n\n ) ]];\n\n ui:case [ ui:for ui:Multiple; ui:use [a ui:Group; ui:parts (\n [ui:sequence 0; a ui:BooleanField; ui:property ui:ordered; ui:label "ordered"] # If this an ordered array or an unordered set?\n [ui:sequence 0; a ui:IntegerField; ui:property ui:min; ui:label "minimum number"] # If this an ordered array or an unordered set?\n [ui:sequence 1; a ui:Choice; ui:canMintNew true; ui:property ui:property; ui:label "property"; ui:from r:Property]\n [ui:sequence 2; a ui:Choice; ui:canMintNew true; ui:property ui:part; ui:from ui:Form; ui:use FieldForm] # Form for details of the field part of the multiple\n ) ]];\n\n ui:case [ ui:for ui:Heading; ui:use [a ui:SingleLineTextField; ui:property ui:contents]];\n\n ui:case [ ui:for ui:Comment; ui:use [a ui:MultiLineTextField; ui:property ui:contents]]\n ]).\n\n\nCaseForm a ui:Group;\n dc:title "Form for a conditional case in a form";\n ui:parts (\n [ ui:sequence 1; a ui:Choice; ui:canMintNew true; ui:property ui:for; ui:label "when it is"; ui:canMintNew true; ui:from s:Class]\n [ui:sequence 2; a ui:Choice; ui:canMintNew true; ui:property ui:use; ui:from ui:Form; ui:canMintNew true; ui:use FieldForm] ). # Form for details of the field part of the multiple\n\n# ENDS\n'},240(e){e.exports='# Issue tracking - Workflow application definition ontology\n#\n# Finite state automaton ontology\n#\n# See requirements for tracking tools http://www.w3.org/2005/01/06-tool-req.html\n#\n@keywords a, is, of.\n\n@prefix : <http://www.w3.org/2005/01/wf/flow#>.\n@prefix wf: <http://www.w3.org/2005/01/wf/flow#>.\n\n@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .\n@prefix s: <http://www.w3.org/2000/01/rdf-schema#> .\n@prefix owl: <http://www.w3.org/2002/07/owl#>.\n@prefix xsd: <http://www.w3.org/2001/XMLSchema#>.\n\n@prefix doc: <http://www.w3.org/2000/10/swap/pim/doc#> .\n@prefix log: <http://www.w3.org/2000/10/swap/log#> .\n@prefix foaf: <http://xmlns.com/foaf/0.1/>.\n@prefix contact: <http://www.w3.org/2000/10/swap/pim/contact#> .\n@prefix doap: <http://usefulinc.com/ns/doap#>.\n@prefix dc: <http://purl.org/dc/elements/1.1/>.\n@prefix dct: <http://purl.org/dc/terms/>.\n@prefix ui: <http://www.w3.org/ns/ui#>.\n\n<> dc:title "Issue Tracking Ontology";\n\n dct:creator <http://www.w3.org/People/Berners-Lee/card#i>;\n\n s:comment """This ontology defines a very general class (Task)\n which can used for any kind of bug tracking, issue tracking,\n to-do-list management, action items, goal dependency, and so on.\n It captures the state of a task as a subclass, so that\n subsumption can be used.\n It captures a discussion thread about a task.\n It captures subtasks structure if necessary.\n A "Tracker" defines actual set of states, categories, etc.,\n which a task can be in. The data about the tracker\n guides the software managing the task.\n\n There is some workflow modeling finite state machine\n terms which are optional for more complex definition\n of the transitions allowed.\n """.\n\nTask a s:Class;\n s:label "task"@en; owl:disjointUnionOf (Open Closed);\n s:comment """Something to be done in a wide sense,\n an agenda item at a meeting is one example, but any\n issue, task, action item, goal, product, deliverable, milestone, can such a thing.\n The requirement for this framework was that it would allow\n one to customize ontologies for things such as agenda items,\n action items, working group issues with a spec, w3c Last Call issues,\n software bugs and administrative requests.\n In π-calculus, a process.\n Make your type of issue a subclass of Task.\n """.\n\nOpen a s:Class; s:subClassOf Task;\n s:label "open"@en, "ouvert"@fr;\n ui:backgroundColor "#d6f5d6"; # green like github for some reason\n s:comment """A task which needs attention. The very crude states of Open and Closed all\n interoperability between different systems if the states for a given\n application are made subclasses of either Open or Closed. This allows\n tasks from different systems to be mixed and treated together with\n limited but valuable functionality.\n """.\n\nClosed a s:Class; s:subClassOf Task;\n s:label "closed"@en, "fermé"@fr;\n ui:backgroundColor "#f5d6d6"; # pink\n s:comment """A task which does not need attention. It may be closed because\n has been abandoned or completed, for example.\n """.\n\n\n ActionItem a s:Class;\n s:subClassOf Task;\n s:label "action item"@en; owl:disjointUnionOf (Open Closed);\n s:comment """An obligation taken on by a person, typically at a meeting.\n """.\n\n\ndescription a rdf:Property;\n s:label "description";\n s:comment """The description, definition,\n or abstract. Information explaining what this is.\n Not arbitrary comment about anything, only about the subject.\n (Use this property for anything. There is no domain restriction.).""".\n\ndependent a rdf:Property;\n s:label "how"; owl:inverseOf [ s:label "why"];\n s:domain Task; s:range Task;\n s:comment """Another task upon which this depends, in the sense that\n this task cannot be completed without that task being done.\n You can\'t use this for dependencies on anything other than other tasks.\n (Note the US spelling of the URI. In the UK, a dependant is a something\n which is dependent on somehing else.)""".\n\nassignee a rdf:Property;\n s:label "assigned to"; owl:inverseOf [s:label "assignment"];\n# s:domain Task;\n s:range foaf:Agent;\n s:comment """The person or group to whom this has been assigned.""".\n\n# use dct:modified\n#modified a rdf:Property;\n# s:label "last changed".\n\nmodifiedBy a rdf:Property;\n s:range foaf:Agent;\n s:label "changed by".\n\n# use dct:created instead\n#created a rdf:Property;\n# s:range xsd:dateTime;\n#\n# Use foaf:maker instead\n#creator a rdf:Property;\n# s:range foaf:Agent;\n# s:label "changed by".\n\nsubscriber a rdf:Property;\n s:label "subscriber";\n s:range foaf:Agent.\n\n\n################## Products\n#\n#\n# History: The Tracker system included a cocept of a product,\n# such that an action could be associated with *either* an issue *or* a product.\n# Noah Mendelsohn for the TAG needed to be able make\n# and to give products: Goals, scuuess criteria,\n# deliverables with dates, schedules, TAG members assigned, related issues.\n#\n\n\nProduct a s:Class; s:subClassOf Task;\n s:label "product";\n s:comment """A product is a task which monitors something\n which must be produced.""".\n\ndeliverable a rdf:Property; s:subPropertyOf dependent;\n s:range Product;\n s:label "deliverable"@en;\n s:comment """Something which must be delivered to accomplish this""".\n\ngoalDescription a rdf:Property, owl:DatatypeProperty;\n s:domain Task; s:range xsd:string;\n s:label "goals";\n s:comment """A textual description of the goals of this product, etc.""".\n\nsuccessCriteria a rdf:Property, owl:DatatypeProperty;\n s:domain Task; s:range xsd:string;\n s:label "success criteria";\n s:comment """A textual description of the successs critera.\n How when we know this is done?""".\n\ndateDue a rdf:Property, owl:DatatypeProperty;\n s:domain Task; s:range xsd:date;\n s:label "due"@en;\n s:comment """The date this task is due.\n """.\n\n################## Attachments\n\nattachment a rdf:Property;\n s:label "attachment";\n s:comment """Something related is attached for information.""".\n\nscreenShot a rdf:Property; s:subPropertyOf attachment;\n s:label "screen shot"@en;\n s:comment """An image taken by capturing the state of a\n computer screen, for example to demonstrate a problem""".\n\ntestData a rdf:Property; s:subPropertyOf attachment;\n s:label "test data"@en;\n s:comment """A file which can be used as inpiut to a test\n or to demonstrate a problem. """.\n\n\nterminalOutput a rdf:Property; s:subPropertyOf attachment;\n s:label "terminal output"@en;\n s:comment """A file showing user interaction from a\n text terminal or console etc. """.\n\n\nmessage a rdf:Property; s:subPropertyOf attachment;\n s:label "message"@en;\n s:comment """A message about this. Attached for information.""".\n\n\nMessage a s:Class; s:label "message"@en.\nrecipent a rdf:Property; s:label "to"; s:domain Message; s:range foaf:Agent.\nsender a rdf:Property; s:label "from"; s:domain Message; s:range foaf:Agent.\n\n############################# A Tracker connects and manages issues\n\ntracker a rdf:Property;\n s:label "tracker";\n owl:inverseOf [ s:label "issue"];\n s:domain Task;\n s:range Tracker.\n\nTracker a s:Class;\n s:label "tracker";\n s:comment """A set of issues and\n the constraints on how they evolve.\n To use this ontology, craete a new tracker.\n Copy an existing one or make up your own.""".\n\nissueClass a rdf:Property;\n s:label "all issues must be in";\n s:domain Tracker;\n s:range s:Class, State;\n s:comment """The class of issues which are allowed in this tracker.\n This is essemtial to the operation of the tracker,\n as it defines which states an issue can be in.\n (The issueClass must be a disjointUnionOf the state classes)""".\n\nissueCategory a rdf:Property;\n s:label "issue category";\n s:domain Tracker;\n s:range s:Class;\n s:comment """Issues may be categorized according to the\n subclasses of this class""".\n\nstateStore a rdf:Property;\n s:label "state store";\n s:domain Tracker;\n s:range doc:Document;\n s:comment """A read-write document.\n The state of the issues is modified here.\n When you set up a trcaker, thgis must be set to point\n to a writeble data resource on the web.""".\n\ntransactionStore\n a rdf:Property;\n s:label "transaction store";\n s:domain Tracker;\n s:range doc:Document;\n s:comment """An appendable document. Transactions and messsages\n can be written into here""".\n\nasigneeClass\n a rdf:Property;\n s:label "assignees must be";\n s:domain Tracker;\n s:range s:Class; # Subclass of foaf:Agent\n s:comment """When an issue is assigned, the assignee must be from this class""".\n\ninitialState\n a rdf:Property;\n s:label "initial state"@en;\n s:label "état initial"@fr;\n s:domain Tracker;\n s:range State;\n s:comment """The initial state for a new issue""".\n\n# Use this to link a project to a tracker\ndoap:bug-database owl:inverseOf [ s:label "project"@en ].\n\n\n\n\n############################################################\n#\n# Finite state machines\n#\nChange a s:Class;\n s:label "change";\n s:comment """The universal class of things which\nchange the state of a task.\nIncluded now: Creation, Transition. (Maybe in the future\nmore π-calculus constructions such as splitting & merging tasks,\nand import/export of obligations to a foreign opaque system.)\n""".\n\nTransition a s:Class; s:subClassOf Change;\n s:label "transition";\n s:comment """A transition is a change of state of\na task. Typical properties include date and/or source\n(a document causing the transition), and a final state.""".\n\nCreation a s:Class; s:subClassOf Change;\n s:label "creation";\n s:comment """A creation is a change from existence\nto non-existence\na task. Typical properties include date and/or source\n(a document causing the transition), and a final state.""".\n\n\ndate s:range DateTime.\n\nfinal a rdf:Property;\n s:label "to";\n s:domain Transition;\n s:range State.\n\ntask a rdf:Property;\n s:range Task;\n s:label "task".\n\nrequires a rdf:Property;\n s:label "requires";\n s:domain Transition;\n s:range rdf:List; # Of properties for validation\n s:comment """To be a valid transition,\n a necessary (but not necessarily sufficuent) condition\n is that there be recorded these properties for the record""".\n\naffects a rdf:Property;\n s:label "affects";\n s:domain doc:Work;\n s:range Task.\n\n\n# { ?x a Transition; task ?t; source ?doc } => { ?doc affects ?t }.\n\n\ncreates a rdf:Property;\n s:label "creates";\n s:domain doc:Work;\n s:range Task.\n\n\nallowedTransitions a rdf:Property;\n s:domain State;\n s:range rdf:List; # @@@ of Action\n s:label "allowed transitions";\n s:comment """The state machine is defined\n by these lists of transition allowed for each issue.\n (An interesting option in the Web is to make an allowed transition\n to a state in soemone else\'s ontology, which in turn allows\n transitions into many ontologies. So a finite state maxchine\n may become very large. In practice this means that a task handed\n off to another organization may be processed on all kinds of ways.)""".\n\n# { ?x a TerminalState} => { ?x allowedTransitions () }.\n\nfinal a rdf:Property;\n s:label "to";\n s:range State.\n\nissue a rdf:Property;\n s:label "issue";\n s:comment\n """A transition changes the state of the given issue.""".\n\nsource a rdf:Property;\n s:label "source";\n s:comment """The source of a transition is\n the document by which it happened""";\n s:range doc:Work.\nTerminalState a s:Class;\n s:subClassOf State;\n s:label "terminal state";\n s:comment """A state from which there are no transitions.""".\n\nNonTerminalState a s:Class;\n s:label "non-terminal state";\n owl:disjointWith TerminalState;\n s:comment """A state from which there are transitions.""".\n\n######################################################\n\n#ends\n'},264(e){e.exports=t},663(e){e.exports=n},426(n){n.exports=e}},i={};function r(e){var n=i[e];if(void 0!==n)return n.exports;var t=i[e]={exports:{}};return s[e](t,t.exports,r),t.exports}r.n=e=>{var n=e&&e.__esModule?()=>e.default:()=>e;return r.d(n,{a:n}),n},r.d=(e,n)=>{for(var t in n)r.o(n,t)&&!r.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:n[t]})},r.o=(e,n)=>Object.prototype.hasOwnProperty.call(e,n),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var o={};r.r(o),r.d(o,{default:()=>w});var a=r(426),l=r(663),u=r(85),c=r(178),d=r(719),p=r(324),f=r(685),m=r(264);const h=l.store,w={icon:a.icons.iconBase+"noun_122196.svg",name:"issue",audience:[],label:function(e,n){const t=h.findTypeURIs(e);return t["http://www.w3.org/2005/01/wf/flow#Task"]||h.holds(e,a.ns.wf("tracker"))?"issue":t["http://www.w3.org/2005/01/wf/flow#Tracker"]?"tracker":null},mintClass:a.ns.wf("Tracker"),mintNew:async function(e,n){const t=e.session.store;let s;n.newInstance?s=t.sym(n.newInstance.doc().uri+"_state.ttl"):(n.newInstance=t.sym(n.newBase+"index.ttl#this"),s=t.sym(n.newBase+"state.ttl"));const i=n.newInstance,r=i.doc(),o=l.authn.currentUser();o&&t.add(i,a.ns.dc("author"),o,r),t.add(i,a.ns.rdf("type"),a.ns.wf("Tracker"),r),t.add(i,a.ns.dc("created"),new Date,r),t.add(i,a.ns.wf("issueClass"),a.ns.wf("Task"),r),t.add(i,a.ns.wf("initialState"),a.ns.wf("Open"),r),t.add(i,a.ns.wf("stateStore"),s,r),t.add(i,a.ns.wf("assigneeClass"),a.ns.foaf("Person"),r),t.add(i,a.ns.wf("stateStore"),s,s);const u=t.statementsMatching(void 0,void 0,void 0,r).concat(t.statementsMatching(void 0,void 0,void 0,s));try{await async function(e,n){const s=e.concat(n).map(e=>e.why),i=Array.from(new Set(s)).map(s=>t.updater.update(e.filter(e=>e.why.sameTerm(s)),n.filter(e=>e.why.sameTerm(s))));return Promise.all(i)}([],u)}catch(n){return a.widgets.complain(e,"Error writing tracker configuration: "+n)}const c=e.dom;return n.div.appendChild(c.createElement("div")).innerHTML=`<h4>Success</h4>\n <p>Your <a href="${i.uri}">new tracker</a> has been made.\n Use the settings tab to configure it.\n </p>\n `,n},render:function(e,n){const t=n.dom,s=t.createElement("div");function i(e){console.warn(e),s.appendChild(a.widgets.errorMessageBlock(t,e))}function o(e,n){e||i(n)}function w(e,s){const r=h.any(e,a.ns.wf("issueClass")),o=(s=s||r).sameTerm(r),l=h.any(s,a.ns.owl("disjointUnionOf"));if(!l)return i(`Configuration error: state ${r} does not have substates`);let d=l.elements;o&&d.length>2&&(d=d.filter(e=>h.holds(e,a.ns.rdfs("subClassOf"),a.ns.wf("Open"))||e.sameTerm(a.ns.wf("Open"))));const p={columnDropHandler:async function(e,t){const i=(0,c.getState)(e,s),r=h.the(e,a.ns.wf("tracker"),null,e.doc()),o=h.any(r,a.ns.wf("stateStore"));if(!t.sameTerm(i)){try{await h.updater.update([m.st(e,a.ns.rdf("type"),i,o)],[m.st(e,a.ns.rdf("type"),t,o)])}catch(e){a.widgets.complain(n,"Unable to change issue state: "+e)}f.refresh()}},filter:o?null:function(e){return!!h.findTypeURIs(e)[a.ns.wf("Open").uri]}};p.sortBy=a.ns.dct("created"),p.sortReverse=!0;const f=(0,u.board)(t,d,function(e){return(0,c.renderIssueCard)(e,n)},p);return f}function g(e){const s=t.createElement("div"),i=l.authn.currentUser(),r={div:s,dom:t,noun:"tracker",statusArea:s,me:i,refreshTarget:e},o=[n.session.paneRegistry.byName("issue")];return a.create.newThingUI(r,n,o),s}function y(){const s=h.any(x,a.ns.wf("issueClass")),i=[k,C,s].concat(h.each(x,a.ns.wf("issueCategory")));i.push(F);const r={renderMain:function(s,i){if(s.innerHTML="",i.sameTerm(b))s.appendChild(w(x));else if(i.sameTerm(C))s.appendChild(function(s){function i(){const e=new m.IndexedFormula;return u.pat.optional.push(e),e}const r=h.any(e,a.ns.wf("issueClass")),o=h.each(s,a.ns.wf("issueCategory")),l=["issue","state","created"],u=new m.Query(a.utils.label(e));for(let e=0;e<o.length;e++)l.push("_cat_"+e);const d={};l.forEach(function(e){u.vars.push(d[e]=m.variable(e))}),u.pat.add(d.issue,a.ns.wf("tracker"),s),u.pat.add(d.issue,a.ns.dct("created"),d.created),u.pat.add(d.issue,a.ns.rdf("type"),d.state),u.pat.add(d.state,a.ns.rdfs("subClassOf"),r),u.pat.optional=[];for(let e=0;e<o.length;e++){const n=i();n.add(d.issue,a.ns.rdf("type"),d["_cat_"+e]),n.add(d["_cat_"+e],a.ns.rdfs("subClassOf"),o[e])}const p=h.any(s,a.ns.wf("propertyList"));if(p){const e=p.elements;for(let n=0;n<e.length;n++){const t=e[n];let s="_prop_"+n;t.uri.indexOf("#")>=0&&(s=t.uri.split("#")[1]);const r=i();u.vars.push(d[s]=m.variable(s)),r.add(d.issue,t,d[s])}}const f={};h.each(void 0,a.ns.rdfs("subClassOf"),r).forEach(function(e){(h.holds(e,a.ns.rdfs("subClassOf"),a.ns.wf("Open"))||e.sameTerm(a.ns.wf("Open")))&&(f[e.uri]=!0)});const w=(0,a.table)(t,{query:u,keyVariable:"?issue",sortBy:"?created",sortReverse:!0,hints:{"?issue":{linkFunction:function(e){const t=m.sym(e);(0,c.exposeOverlay)(t,n)},label:"Title"},"?created":{cellFormat:"shortDate"},"?state":{initialSelection:f,label:"Status"}}}),g=h.any(e,a.ns.wf("stateStore"));return w.appendChild(function(e,n){return a.widgets.button(t,a.icons.iconBase+"noun_479395.svg","refresh table",async t=>{try{await h.fetcher.load(e,{force:!0,clearPreviousData:!0})}catch(e){return void alert(e)}a.widgets.refreshTree(n)})}(g,w)),w}(x));else if(i.sameTerm(F))s.appendChild(function(e){const n=t.createElement("div");n.appendChild((0,f.csvButton)(t,e));const s=h.any(e,a.ns.wf("issueClass")),i=[C,s].concat(h.each(e,a.ns.wf("issueCategory"))),r=n.appendChild(t.createElement("div"));a.widgets.renderNameValuePair(t,h,r,null,"Default view").appendChild(a.widgets.makeSelectForOptions(t,h,e,a.ns.wf("defaultView"),i,{},e.doc()));const l={dom:t,div:n,noun:"tracker"};return a.login.registrationControl(l,e,a.ns.wf("Tracker")).then(s=>{const i=a.ns.wf("TrackerSettingsForm");m.parse('@prefix : <http://www.w3.org/ns/ui#> .\n@prefix core: <http://www.w3.org/2005/01/wf/flow#>.\n@prefix dct: <http://purl.org/dc/terms/>.\n@prefix owl: <http://www.w3.org/2002/07/owl#>.\n@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.\n@prefix ui: <http://www.w3.org/ns/ui#> .\n@prefix vcard: <http://www.w3.org/2006/vcard/ns#>.\n@prefix wf: <http://www.w3.org/2005/01/wf/flow#> .\n\n core:TrackerSettingsForm a :Form;\n <http://purl.org/dc/elements/1.1/title> "Tracker Configuration Form";\n :parts (\n\n [ a ui:Heading; ui:contents "About the tracker"@en ]\n\n [ a :SingleLineTextField;\n :label "Title of issue tracker";\n :maxLength "128";\n :property dct:title;\n :size "40" ]\n\n [ a :MultiLineTextField; :label "Description"; :property wf:description; :size "40" ]\n\n [ a ui:Choice; ui:canMintNew true; ui:use core:SuperClassForm; ui:follow true;\n ui:property wf:issueClass;\n ui:label "What states can an issue be in?";\n ui:from rdfs:Class;\n ui:default wf:Task ]\n\n [ a ui:Comment; ui:contents """You can optionally sort issues using (one or more) classification systems"""@en ]\n\n\n [ a ui:Multiple; ui:canMintNew true; ui:part core:ClassificationForm;\n ui:property wf:issueCategory; ui:label "Sort them into which category?"; ui:from rdfs:Class ]\n\n [ a :BooleanField;\n :label "Allow issues to have sub-issues";\n :property wf:allowSubIssues;\n :default false ]\n\n [ a ui:Heading; ui:contents "Table view:"@en ]\n\n [ a ui:Comment; ui:contents "Any extra properties to include?"@en ]\n\n\n [a ui:Multiple; ui:property wf:propertyList; ui:ordered true; ui:part core:PropertyForm; ui:follow true ]\n\n [ a ui:Heading; ui:contents "Details of issues"@en ]\n\n # Use a people picker ideally\n [ a ui:Choice; ui:canMintNew true; ui:use core:GroupForm;\n ui:property wf:assigneeGroup;\n ui:label "Assign issues to people from which group?";\n ui:from vcard:Group;\n ]\n\n # Optionally one form for extras\n\n [ a ui:Choice; ui:canMintNew true; ui:use ui:FormForm;\n ui:property wf:extrasEntryForm;\n ui:label "Other things to save about each issue?";\n ui:from ui:Form;\n ]\n\n\n ) .\n\n # Form for the superclass of all states\n # @@ also We must require each state class to be stated to be a subclass of EITHER Open OR Closed.\n core:SuperClassForm a ui:Form; dct:title "Form for managing states";\n ui:parts (\n [ a :SingleLineTextField;\n :label "Name of set of states";\n :defualt "States";\n :maxLength "128";\n :property rdfs:label;\n :size "40" ]\n [a ui:Multiple; ui:property owl:disjointUnionOf; ui:ordered true; ui:part core:StateForm ]\n # [ a ui:Multiple; ui:property rdfs:subClassOf; ui:reverse true; ui:part core:StateForm ]\n ) .\n\n core:StateForm a ui:Form; dct:title "Form for one state";\n ui:parts (\n [ a :SingleLineTextField;\n :label "Name of state";\n :maxLength "128";\n :property rdfs:label;\n :size "40" ]\n [ a :ColorField; :label "Background color"; :property :backgroundColor ]\n # @@ add icon for state\n\n ).\n\n\n # Form for Classification\n\n core:ClassificationForm a ui:Form; dct:title "Form for a classification by categpry";\n ui:parts (\n [ a :SingleLineTextField;\n :label "Name of classification:";\n :maxLength "128";\n :property rdfs:label;\n :size "40" ]\n [a ui:Multiple; ui:property owl:disjointUnionOf; ui:ordered true; ui:part core:CategoryForm ]\n ) .\n\n core:CategoryForm a ui:Form; dct:title "Form for a category";\n ui:parts (\n [ a :SingleLineTextField;\n :label "Name of category";\n :maxLength "128";\n :property rdfs:label;\n :size "40" ]\n [ a :ColorField; :label "Background color"; :property :backgroundColor ]\n\n ).\n\n core:PropertyForm a ui:Form; ui:parts ( # Internded for raed only only marking the\n [ a :SingleLineTextField;\n :label "(property name)";\n :maxLength "128";\n :property rdfs:label;\n :size "40" ]\n ).\n\n\n # Other ontology stuff we are otherwis missing\n\n # we can usde ui:label to give a decent abel when the ontology uses a really bad one\n rdfs:subClassOf ui:label "super class" .\n # We can also add a specific nice label for the inverse\n [] owl:inverse rdfs:subClassOf; rdfs:label "sub class" .\n owl:disjointUnionOf ui:label "option" .\n\n # Form for new group\n\n\n core:GroupForm a ui:Form; dct:title "Form for new contacts group"; ui:parts (\n [ a :SingleLineTextField;\n :label "Name of new group";\n :maxLength "128";\n :property vcard:fn;\n :size "60" ]\n\n [ a ui:Heading; ui:contents "Members of group"@en ]\n\n [ a ui:Multiple; ui:label "contacts in group"; ui:property vcard:member; ui:part core:PersonForm ]\n\n ).\n\n core:PersonForm a ui:Form; dct:title "New contact details form"; ui:parts (\n\n [ a :NamedNodeURIField; ui:label "Solid ID"; ui:property owl:sameAs; ui:size 60 ]\n\n [ a :SingleLineTextField;\n :label "Name of contact";\n :maxLength "128";\n :property vcard:fn;\n :size "60" ]\n\n [ a ui:PhoneField; :label "Phone"; :property vcard:phone; ] # @@ check property]\n\n [ a :EmailField; :label "Email"; :property vcard:email ] # @@ check property\n\n ).\n\n# classificattion owl:disjointUnionOf ()\n wf:Tracker :creationForm core:SettingsForm .\n',h,i.doc().uri,"text/turtle"),a.widgets.appendForm(t,n,{},e,i,e.doc(),o)}),n}(x));else if(i.sameTerm(k))s.appendChild(function(e){const n=t.createElement("div"),s={dom:t,div:n,noun:"tracker"};return a.login.registrationList(s,{public:!0,private:!0,type:e}).then(e=>{n.appendChild(g(n))}),n}(a.ns.wf("Tracker")));else{if(!h.holds(x,a.ns.wf("issueCategory"),i)&&!h.holds(x,a.ns.wf("issueClass"),i))throw new Error("Unexpected tab type: "+i);s.appendChild(w(x,i))}},items:i,selectedTab:h.any(x,a.ns.wf("defaultView"),null,x.doc())||C},l=k.doc();return h.add(k,a.ns.rdfs("label"),"My Trackers",l),h.add(F,a.ns.rdfs("label"),"Settings",l),h.add(s,a.ns.rdfs("label"),"By State",l),a.tabs.tabWidget(r)}n.paneDiv=s,s.setAttribute("class","issuePane");const b=a.ns.wf("BoardView"),C=a.ns.wf("TableView"),F=a.ns.wf("SettingsView"),k=a.ns.wf("InstancesView"),v=h.updater,T=h.findTypeURIs(e);let x;const S=a.ns.wf("").doc();h.holds(void 0,void 0,void 0,S)||m.parse(r(240),h,S.uri,"text/turtle");const P=a.ns.ui("").doc();let O;h.holds(void 0,void 0,void 0,P)||m.parse(r(197),h,P.uri,"text/turtle"),T["http://www.w3.org/2005/01/wf/flow#Task"]||h.holds(e,a.ns.wf("tracker"))?async function(){if(x=h.any(e,a.ns.wf("tracker")),!x)throw new Error("This issue "+e+"has no tracker");try{await n.session.store.fetcher.load(x.doc())}catch(e){return i("Failed to load tracker config "+x.doc()+": "+e)}const t=h.any(x,a.ns.wf("stateStore"));if(!t)return i("Tracker has no state store: "+x);try{await n.session.store.fetcher.load(e)}catch(e){return i("Failed to load issue state "+t+": "+e)}s.appendChild((0,c.renderIssue)(e,n)),v.addDownstreamChangeListener(t,function(){a.widgets.refreshTree(s)})}().then(()=>console.log("Single issue rendered")):T["http://www.w3.org/2005/01/wf/flow#Tracker"]?async function(){function i(e){a.widgets.refreshTree(s),(0,c.exposeOverlay)(e,n),f.disabled=!1}x=e;try{await async function(e,n){async function t(n){const t=e.any(n,a.ns.owl("disjointUnionOf"),null,s);if(!t)throw new Error(`Classification ${n} has no disjointUnionOf`);if(!t.elements)throw new Error(`Classification ${n} has no array`);const i=new Set(t.elements.map(e=>e.uri)),r=new Set(e.each(null,a.ns.rdfs("subClassOf"),n,s).map(e=>e.uri)),o=[...r].filter(e=>!i.has(e)).map(t=>({action:"delete",st:m.st(e.sym(t),a.ns.rdfs("subClassOf"),n,s)})),l=[...i].filter(e=>!r.has(e)).map(t=>({action:"insert",st:m.st(e.sym(t),a.ns.rdfs("subClassOf"),n,s)}));return o.concat(l)}const s=n.doc(),i=e.any(n,a.ns.wf("issueClass")),r=e.each(n,a.ns.wf("issueCategory")).concat([i]);let o=[];for(const e of r)o=o.concat(await t(e));if(o.length){const n=o.filter(e=>"insert"===e.action).map(e=>e.st),t=o.filter(e=>"delete"===e.action).map(e=>e.st);console.log("Damage:",o),confirm(`Fix ${o} inconsistent subclasses in tracker config?`)&&await e.updater.update(t,n)}}(h,x)}catch(e){console.log("@@@ Error fixing subclasses in config: "+e)}const r=h.any(e,a.ns.wf("issueClass"));if(!r)throw new Error("This tracker has no issueClass");const o=h.any(e,a.ns.wf("stateStore"));if(!o)throw new Error("This tracker has no stateStore");const l=t.createElement("h2");l.setAttribute("style","font-size: 150%"),s.appendChild(l);const u=a.utils.label(r);l.appendChild(t.createTextNode(u+" list"));const f=t.createElement("button"),w=t.createElement("div");f.setAttribute("type","button"),f.setAttribute("style","padding: 0.3em; font-size: 100%; margin: 0.5em;"),w.appendChild(f),s.appendChild(w);const g=t.createElement("img");g.setAttribute("src",a.icons.iconBase+"noun_19460_green.svg"),g.setAttribute("style","width: 1em; height: 1em; margin: 0.2em;"),f.appendChild(g);const b=t.createElement("span");b.innerHTML="New "+u,f.appendChild(b),f.addEventListener("click",function(e){f.disabled=!0,w.appendChild((0,p.newIssueForm)(t,h,x,null,i))},!1),n.session.store.fetcher.load([o]).then(function(t){const i=y();s.appendChild(i),i.refresh||console.log("No table refresh function?!"),s.appendChild((0,d.newTrackerButton)(e,n)),v.addDownstreamChangeListener(o,i.refresh)}).catch(function(e){return console.log("Cannot load state store: "+e)})}().then(()=>console.log("Tracker rendered")):console.log("Error: Issue pane: No evidence that "+e+" is either a bug or a tracker.");const M=s.appendChild(t.createElement("div"));return n.overlay=M,M.style="position: fixed; z-index: 100; top: 1.51em; right: 2em; left: 2em; bottom:1.5em; border: 0.1em grey; overflow: scroll;",M.style.visibility="hidden",l.authn.checkUser().then(e=>{if(e)return console.log("Web ID set already: "+e),void(n.me=e);O=a.login.loginStatusBox(t,e=>{e?(n.me=h.sym(e),console.log("Web ID set from login button: "+e),s.removeChild(O)):n.me=null}),O.setAttribute("style","margin: 0.5em 1em;"),s.appendChild(O),n.statusArea||(n.statusArea=s.appendChild(t.createElement("div")))}),s}};return o})());
|
|
20468
20521
|
|
|
20469
20522
|
/***/ },
|
|
20470
20523
|
|
|
20471
20524
|
/***/ 1927
|
|
20472
20525
|
(module, __unused_webpack_exports, __webpack_require__) {
|
|
20473
20526
|
|
|
20474
|
-
!function(e,t){ true?module.exports=t(__webpack_require__(500),__webpack_require__(8230),__webpack_require__(9332)):0}(this,(e,t,n)=>(()=>{"use strict";var i={264(e){e.exports=t},426(t){t.exports=e},663(e){e.exports=n}},o={};function a(e){var t=o[e];if(void 0!==t)return t.exports;var n=o[e]={exports:{}};return i[e](n,n.exports,a),n.exports}a.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return a.d(t,{a:t}),t},a.d=(e,t)=>{for(var n in t)a.o(t,n)&&!a.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var s={};a.r(s),a.d(s,{default:()=>p});var r=a(426),l=a(264),d=a(663);const{typeIndex:c}=d.solidLogicSingleton,{loadTypeIndexesFor:u}=c,m=r.ns,p={icon:r.icons.iconBase+"noun_66617.svg",name:"meeting",audience:[m.solid("PowerUser")],label:function(e,t){const n=t.session.store,i=r.ns;return n.holds(e,i.rdf("type"),i.meeting("Meeting"))?"Meeting":null},mintClass:r.ns.meeting("Meeting"),mintNew:function(e,t){return new Promise(function(n,i){const o=e.session.store,a=r.ns;t.newInstance=t.newInstance||o.sym(t.newBase+"index.ttl#this");const s=t.newInstance,c=s.doc(),u=d.authn.currentUser();u&&o.add(s,a.dc("author"),u,c),o.add(s,a.rdf("type"),a.meeting("Meeting"),c),o.add(s,a.dc("created"),new Date,c),o.add(s,a.ui("backgroundColor"),new l.Literal("#ddddcc",void 0,a.xsd("color")),c);const m=new l.Collection;o.add(s,a.meeting("toolList"),m,c),m.elements.push(s),o.updater.put(c,o.statementsMatching(void 0,void 0,void 0,c),"text/turtle",function(e,o,a){o?n(t):i(new Error("Error writing meeting configuration: "+a))})})},render:function(e,t){const n=t.dom,i=t.session.store,o=r.ns,a=i.updater,s=this,c=function(e,t){console.log(e);const i=n.createElement("pre");i.setAttribute("style","background-color: "+t||0),h.appendChild(i),i.appendChild(n.createTextNode(e))},m=function(e,t){e||c(t)},p=e,g=e.doc(),f=e.dir().uri,h=n.createElement("div"),b=h.appendChild(n.createElement("table"));b.style="width: 100%; height: 100%; margin:0;";const w=b.appendChild(n.createElement("tr"));w.appendChild(n.createElement("div"));const y=b.appendChild(n.createElement("tr")),v=b.appendChild(n.createElement("td")).appendChild(n.createElement("table")).appendChild(n.createElement("tr"));w.setAttribute("style","height: 2em;");let C=null;const x=function(){a.put(g,i.statementsMatching(void 0,void 0,void 0,g),"text/turtle",function(e,t,n){t?($.refresh(),z()):c(n="FAILED to save new thing at: "+g+" : "+n)})},k=function(e,t,n){const s=t.doc();n&&i.add(p,n,t,s),i.add(t,o.meeting("parentMeeting"),p,s),a.put(s,i.statementsMatching(void 0,void 0,void 0,s),"text/turtle",function(e,n,i){n?x():c("FAILED to save new tool at: "+t+" : "+i)})},T=function(e,t,n,a){t&&i.add(p,t,e,g);const s=r.widgets.newThing(g);return n&&i.add(s,o.rdfs("label"),n,g),a&&i.add(s,o.meeting("icon"),i.sym(a),g),i.add(s,o.rdf("type"),o.meeting("Tool"),g),i.add(s,o.meeting("target"),e,g),i.the(p,o.meeting("toolList")).elements.push(s),s};function A(e){const t=/https:\/\/www\.google\..*\/maps\//,n="https://www.google.com/maps/embed/v1/",i=e.uri;if(!i.match(t))return e;if(i.startsWith(n))return e;const o=i.replace(t,n)+"&key=AIzaSyB8aaT6bY9tcLCmc2oPCkdUYLmTOWM8R54";return console.log("Converted Google Map URI! "+o),l.sym(o)}const E=function(n){Promise.all(n.map(function(n){return function(n){return new Promise(function(a){console.log("Dropped on thing "+n);const s=n.uri;if(s.startsWith("http:")&&s.indexOf("#")<0)return function(n){const a=o.wf("attachment");i.add(e,a,n,e.doc()),P({icon:"noun_160581.svg",limit:1,shareTab:!0},{newInstance:e,pane:t.session.paneRegistry.byName("link"),predicate:o.meeting("attachmentTool"),tabTitle:"Links",view:"link",noIndexHTML:!0})}(n),a(n);i.fetcher.nowOrWhenFetched(n,function(e,t){function d(e){e=A(e),console.log("make web page attachement tab "+e);const t=T(e,r.ns.wf("attachment"),r.utils.label(e),null);return i.add(t,r.ns.meeting("view"),"iframe",g),a(e)}if(e){const e=n,t=i.findTypeURIs(e);for(const e in t)console.log(" drop object type includes: "+e);if(o.vcard("Individual").uri in t||o.foaf("Person").uri in t||o.foaf("Agent").uri in t)return function(e){const t=i.any(e,o.foaf("preferredURI")),n=t?i.sym(t):e,a=i.any(p,o.meeting("attendeeGroup")),s=function(e,t){const n=[l.st(t,r.ns.vcard("hasMember"),e,t.doc())],a=i.any(e,o.vcard("fn"))||i.any(e,o.foaf("name"));a&&n.push(l.st(e,r.ns.vcard("fn"),a,t.doc())),i.fetcher.nowOrWhenFetched(t.doc(),void 0,function(o,a){o?i.updater.update([],n,function(t,n,i){m(n,i),n&&console.log("Addded to particpants OK: "+e)}):c("Can't read group to add person"+t)})};a?s(n,a):I().then(function(e){const t=e.newInstance;s(n,t),i.fetcher.putBack(g,{contentType:"text/turtle"}).then(function(e){console.log("Particiants Group created: "+t)})}).catch(function(e){c(e)})}(n),a(n);if(s.startsWith("https:")&&s.indexOf("#")<0){const e=i.fetcher.getHeader(n,"x-frame-options");let t=!0;if(e)for(let n=0;n<e.length;n++)console.log("x-frame-options: "+e[n]),e[n].indexOf("sameorigin")<0&&(t=!1),e[n].indexOf("deny")<0&&(t=!1);if(t)return function(e){const t=T(e,r.ns.wf("attachment"),r.utils.label(e),null);i.add(t,r.ns.meeting("view"),"iframe",g)}(n=A(n)),a(n)}return console.log("Default: assume web page attachement "+n),d(n)}return console.log("Error looking up dropped thing, will just add it anyway. "+n+": "+t),d(n)})})}(l.sym(n))})).then(function(e){x()})},F=function(e){r.widgets.uploadFiles(i.fetcher,e,p.dir().uri+"Files",p.dir().uri+"Pictures",function(e,t){e.type.startsWith("image/")?L("Files"):M("Pictures")})},L=function(e){return P({icon:"noun_598334.svg",limit:1,shareTab:!0},{newInstance:i.sym(p.dir().uri+e+"/"),pane:t.session.paneRegistry.byName("folder"),predicate:o.meeting("pictures"),shareTab:!0,tabTitle:e,view:"slideshow",noIndexHTML:!0})},M=function(e){return P({icon:"noun_681601.svg",limit:1,shareTab:!0},{newInstance:i.sym(p.dir().uri+"Files/"),pane:t.session.paneRegistry.byName("folder"),predicate:o.meeting("materialsFolder"),tabTitle:"Materials",noIndexHTML:!0})},I=function(){return P({icon:"noun_339237.svg",limit:1,shareTab:!0},{newInstance:i.sym(p.dir().uri+"Attendees/index.ttl#this"),pane:t.session.paneRegistry.byName("contact"),predicate:o.meeting("attendeeGroup"),tabTitle:"Attendees",instanceClass:o.vcard("Group"),instanceName:r.utils.label(e)+" attendees",noIndexHTML:!0})};function P(e,n){return new Promise(function(i,o){const a=t.session.store;if(!n.useExisting){const t=a.any(p,n.predicate);if(t){if(e.limit&&1===e.limit&&!e.shareTab)return c("Already have "+t+" as "+r.utils.label(n.predicate)),c("Cant have two"),i(null);if(e.shareTab)return console.log("Using existing "+t+" as "+r.utils.label(n.predicate)),i({me:C,newInstance:t,instanceClass:n.instanceClass})}}C||n.me||o(new Error("Username not defined for new tool")),n.me=n.me||C,n.newInstance=n.useExisting||n.newInstance||a.sym(n.newBase+"index.ttl#this"),n.pane.mintNew(t,n).then(function(e){const t=T(e.newInstance,e.predicate,e.tabTitle,e.pane.icon);e.view&&a.add(t,r.ns.meeting("view"),e.view,g),x(),a.fetcher.putBack(g,{contentType:"text/turtle"}).then(function(t){i(e)}).catch(function(e){o(e)})}).catch(function(e){c(e),o(e)})})}const _=function(){const e=r.login.selectWorkspace(n,{noun:"meeting"},function(i,o){s.mintNew(t,{newBase:o}).then(function(t){const i=t.newInstance;R.removeChild(e);const o=R.appendChild(n.createElement("p"));o.setAttribute("style","font-size: 140%;"),o.innerHTML="Your <a target='_blank' href='"+i.uri+"'><b>new meeting</b></a> is ready to be set up. <br/><br/><a target='_blank' href='"+i.uri+"'>Go to your new meeting.</a>"}).catch(function(t){R.removeChild(e),R.appendChild(r.widgets.errorMessageBlock(n,t))})});R.appendChild(e)},S=[{icon:"noun_339237.svg",maker:function(e){const n=f+"Group/",i=t.session.store;let a=i.any(p,o.meeting("particpants"));a||(a=l.sym(n+"index.ttl#this")),console.log("Participant group: "+a);const s=T(a,o.meeting("particpants"),"Particpants",r.icons.iconBase+"noun_339237.svg");i.add(s,r.ns.meeting("view"),"peoplePicker",g),x()},hint:"Make a group of people",limit:1},{icon:"noun_346777.svg",maker:function(e){return P(e,{useExisting:p,pane:t.session.paneRegistry.byName("schedule"),view:"schedule",tabTitle:"Schedule poll",noIndexHTML:!0})},hint:"Make a poll to schedule the meeting"},{icon:"noun_48218.svg",maker:function(e){},limit:1,hint:"Add an agenda list",disabled:!0},{icon:"noun_79217.svg",maker:function(e){return P(e,{newBase:f+"SharedNotes/",predicate:r.ns.meeting("sharedNotes"),tabTitle:"Shared Notes",pane:t.session.paneRegistry.byName("pad")})},hint:"Add a shared notepad"},{icon:"noun_346319.svg",maker:function(e){const n=f+"Chat/",i=t.session.store;if(i.holds(p,o.meeting("chat")))return void console.log("Ignored - already have chat");const a=i.sym(n+"chat.ttl");i.add(a,o.rdf("type"),o.meeting("Chat"),a),T(a,o.meeting("chat"),"Chat",r.icons.iconBase+"noun_346319.svg"),k(0,a,o.meeting("chat"))},limit:1,hint:"Add a chat channel for the meeting"},{icon:"noun_17020.svg",maker:function(e){const n=f+"Actions/",i=t.session.store;if(i.holds(p,o.meeting("actions")))return void console.log("Ignored - already have actions");const a=i.sym(n+"config.ttl"),s=i.sym(n+"config.ttl#this"),l=i.sym(n+"state.ttl");i.add(s,o.dc("title"),(i.anyValue(p,o.cal("summary"))||"Meeting ")+" actions",a),i.add(s,o.wf("issueClass"),o.wf("Task"),a),i.add(s,o.wf("initialState"),o.wf("Open"),a),i.add(s,o.wf("stateStore"),l,a),i.add(s,o.wf("assigneeClass"),o.foaf("Person"),a),i.add(s,o.rdf("type"),o.wf("Tracker"),a),i.add(s,o.rdf("type"),o.wf("Tracker"),a),T(s,o.meeting("actions"),"Actions",r.icons.iconBase+"noun_17020.svg"),k(0,s,o.meeting("actions"))},limit:1,hint:"Add a list of action items"},{icon:"noun_260227.svg",maker:function(e){const n=t.session.store,i=l.sym("https://meet.jit.si/"+r.utils.genUuid());if(n.holds(p,o.meeting("videoCallPage")))return void console.log("Ignored - already have a videoCallPage");n.add(i,o.rdf("type"),o.meeting("VideoCallPage"),g);const a=T(i,o.meeting("videoCallPage"),"Video call",r.icons.iconBase+"noun_260227.svg");n.add(a,o.meeting("view"),"iframe",g),x()},limit:1,hint:"Add a video call for the meeting"},{icon:"noun_25830.svg",maker:function(e){r.widgets.askName(n,i,R,o.log("uri"),r.ns.rdf("Resource")).then(function(e){if(!e)return z();const n=t.session.store,i=r.ns,o=n.sym(e),a=T(o,i.wf("attachment"),r.utils.label(o),null);n.add(a,i.meeting("view"),"iframe",g),x()}).catch(function(e){c("Error making new sub-meeting: "+e)})},hint:"Attach meeting materials",disabled:!1},{icon:"noun_123691.svg",maker:function(e){const n=t.session.store,i=r.ns,o=p.dir();if(e.limit&&1===e.limit&&n.holds(p,i.wf("sharingControl")))return void c("Ignored - already have "+r.utils.label(V.predicate));const a=T(o,i.wf("sharingControl"),"Sharing",r.icons.iconBase+"noun_123691.svg");n.add(a,i.meeting("view"),"sharing",g),x()},limit:1,hint:"Control Sharing",disabled:!1},{icon:"noun_66617.svg",maker:function(e){r.widgets.askName(n,i,R,o.foaf("name"),r.ns.meeting("Meeting")).then(function(n){if(!n)return z();const i=encodeURIComponent(n),o={newBase:f+i+"/",predicate:r.ns.meeting("subMeeting"),tabTitle:n,pane:t.session.paneRegistry.byName("meeting")};return P(e,o)}).catch(function(e){c("Error making new sub-meeting: "+e)})},hint:"Make a sub meeting",disabled:!1}],N=l.sym("https://solid.github.io/solid-panes/meeting/meetingDetailsForm.ttl#settings");l.parse('@prefix : <http://www.w3.org/ns/ui#> .\n@prefix f: <#> .\n@prefix dc: <http://purl.org/dc/elements/1.1/>.\n@prefix cal: <http://www.w3.org/2002/12/cal/ical#>.\n@prefix meeting: <http://www.w3.org/ns/pim/meeting#>.\n@prefix ns: <http://www.w3.org/2006/vcard/ns#> .\n@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .\n@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.\n@prefix te: <http://purl.org/dc/terms/> .\n@prefix dc: <http://purl.org/dc/elements/1.1/>.\n@prefix xsd: <http://www.w3.org/2001/XMLSchema#>.\n@prefix ui: <http://www.w3.org/ns/ui#>.\n\n f:main a :Form;\n cal:summary "Meeting Details";\n :part f:titleField, f:locationField, f:startField,\n f:endField, f:eventComment, f:colorField .\n\n f:titleField a :SingleLineTextField;\n :maxLength 256;\n :property cal:summary;\n :label "Name of meeting";\n :size 80 .\n\n f:locationField a :SingleLineTextField;\n :maxLength 128;\n :property cal:location;\n :size 40 .\n\n f:startField a :DateField;\n :label "Start";\n :property cal:dtstart .\n\n f:endField a :DateField;\n :label "End";\n :property cal:dtend .\n\n f:colorField a :ColorField;\n :label "Tab color";\n # :default "#ddddcc"^^xsd:color;\n :property ui:backgroundColor .\n\n f:eventComment\n a ui:MultiLineTextField;\n # ui:maxLength\n # "1048";\n # ui:size\n # "40".\n ui:property\n cal:comment.\n\n###################################################\n\nf:settings a :Form;\n dc:title "Tab settings";\n :part f:labelField, f:targetField, f:viewField.\n\n f:labelField a :SingleLineTextField;\n :maxLength 128;\n :property rdfs:label;\n :label "Label on tab";\n :size 40 .\n\n f:targetField a :NamedNodeURIField;\n :maxLength 1024; # Longer?\n :property meeting:target;\n :label "URL of resource";\n :size 80 .\n\n f:colorField2 a :ColorField;\n :label "Tab color";\n # :default "#ddddcc"^^xsd:color;\n :property ui:backgroundColor .\n\n f:viewField a :SingleLineTextField;\n :maxLength 128;\n :property meeting:view;\n :label "View mode (experts only)";\n :size 40 .\n\n#\n',i,N.doc().uri,"text/turtle");const B="padding: 1em; width: 3em; height: 3em;",U=v.appendChild(n.createElement("td")),R=v.appendChild(n.createElement("td")),D=U.appendChild(n.createElement("img"));let O=!1;D.setAttribute("src",r.icons.iconBase+"noun_19460_green.svg"),D.setAttribute("style",B+"opacity: 50%;"),D.setAttribute("title","Add another tool to the meeting");const j=function(e){O=!O,D.setAttribute("style",B+(O?"background-color: yellow;":"")),H(O?"":"display: none;")};let G;d.authn.checkUser().then(e=>{if(e)return C=e,D.addEventListener("click",j),void D.setAttribute("style",B);G=r.login.loginStatusBox(n,e=>{e?(C=i.sym(e),R.removeChild(G),D.addEventListener("click",j),D.setAttribute("style",B)):(console.log("(Logged out)"),C=null)}),G.setAttribute("style","margin: 0.5em 1em;"),R.appendChild(G)});const W=[];for(let e=0;e<S.length;e++)(function(){const t=S[e],i=U.appendChild(n.createElement("img"));i.setAttribute("src",r.icons.iconBase+t.icon),i.setAttribute("style",B+"display: none;"),W.push(i),i.tool=t;const o=t.maker;t.disabled||i.addEventListener("click",function(e){q(i),o(t)})})();const H=function(e){for(let t=0;t<W.length;t++){let n=B+e;S[t].disabled&&(n+="opacity: 0.3;"),W[t].setAttribute("style",n)}},z=function(){H("display: none;"),D.setAttribute("style",B)},q=function(e){H("display: none;"),e.setAttribute("style",B+"background-color: yellow;")},V={dom:n};V.predicate=o.meeting("toolList"),V.subject=e,V.ordered=!0,V.orientation=1,V.renderMain=function(e,a){let s,m=null,f=null;e.innerHTML="";const h=function(t,n){t||(e.textContent=""+n)},b=function(){e.appendChild(n.createElement("h3")).textContent="Details of meeting";const t=l.sym("https://solid.github.io/solid-panes/meeting/meetingDetailsForm.ttl#main");r.widgets.appendForm(document,e,{},p,t,p.doc(),h),e.appendChild(function(){const e=n.createElement("div"),t=e.appendChild(n.createElement("p"));return t.setAttribute("style","margin: 0em; padding:3em; color: #888;"),t.textContent="Tip: Drag URL-bar icons of web pages into the tab bar on the left to add new meeting materials.",e}()),C=d.authn.currentUser(),C&&i.add(p,o.dc("author"),C,g);const a={noun:"meeting",me:C,statusArea:e,div:e,dom:n};r.login.registrationControl(a,p,o.meeting("Meeting")).then(function(e){console.log("Registration control finsished.")}),r.pad.manageParticipation(n,e,g,p,C,{});const s="height: 2em; width: 2em; margin:0.5em;",c=e.appendChild(n.createElement("div")),u=c.appendChild(n.createElement("img"));u.setAttribute("src",r.icons.iconBase+"noun_145978.svg"),u.setAttribute("title","Make a fresh new meeting"),u.addEventListener("click",_),u.setAttribute("style",s);const m=c.appendChild(n.createElement("a"));m.setAttribute("href","https://github.com/solid/solid-panes"),m.setAttribute("target","_blank");const f=m.appendChild(n.createElement("img"));f.setAttribute("src",r.icons.iconBase+"noun_368567.svg"),f.setAttribute("title","Fork me on github"),f.setAttribute("style",s+"opacity: 50%;")};if(i.holds(a,o.rdf("type"),o.meeting("Tool"))){const g=i.any(a,o.meeting("target"));if(g.sameTerm(p)&&!i.any(a,o.meeting("view")))b();else{let h=i.any(a,o.meeting("view"));h=h?h.value:null,"details"===h?b():"peoplePicker"===h?function(){const t={div:e,dom:n};e.appendChild(n.createElement("h4")).textContent="Meeting Participants";const a=function(e){const t=[l.st(p,o.meeting("particpantGroup"),e,p.doc())];i.updater.update([],t,function(t,n,i){n?f=e:c("Cant save participants group: "+i)})};f=i.any(p,o.meeting("particpantGroup")),d.authn.checkUser().then(e=>{e&&u(i.sym(e)).then(function(){const e={defaultNewGroupName:"Meeting Participants",selectedGroup:f};new r.widgets.PeoplePicker(t.div,t.index.private[0],a,e).render()})})}():"iframe"===h?function(t){const i=e.appendChild(n.createElement("iframe"));i.setAttribute("src",t.uri),i.setAttribute("style","border: none; margin: 0; padding: 0; height: 100%; width: 100%;"),i.setAttribute("allow","microphone camera"),i.setAttribute("name","disable-x-frame-options"),e.style.padding=0}(g):(m=h?t.session.paneRegistry.byName(h):null,s=e.appendChild(n.createElement("table")),s.style.width="100%",t.getOutliner(n).GotoSubject(g,!0,m,!1,void 0,s))}}else a.sameTerm(p)?b():(!a.sameTerm(a.doc())||i.holds(a,r.ns.rdf("type"),r.ns.meeting("Chat"))||i.holds(a,r.ns.rdf("type"),r.ns.meeting("PaneView")))&&(s=e.appendChild(n.createElement("table")),t.getOutliner(n).GotoSubject(a,!0,void 0,!1,void 0,s))},V.renderTab=function(e,t){if(i.holds(t,o.rdf("type"),o.meeting("Tool"))){const a=i.any(t,o.meeting("target"));let s=i.any(t,o.rdfs("label"));s=s?s.value:r.utils.label(a);const l=e.appendChild(n.createElement("div"));l.textContent=s,l.setAttribute("style","margin-left: 0.7em");const d=i.any(t,o.meeting("icon"));if(d){const t=e.appendChild(n.createElement("table")).appendChild(n.createElement("tr")),i=t.appendChild(n.createElement("td")),o=t.appendChild(n.createElement("td")),a=i.appendChild(n.createElement("img"));a.setAttribute("src",d.uri),a.setAttribute("style","width: 1.5em; height: 1.5em;"),a.setAttribute("title",s),o.appendChild(l)}else e.appendChild(l)}else e.textContent=r.utils.label(t)},V.renderTabSettings=function(e,t){if(e.innerHTML="",e.style+="border-color: #eed;",e.appendChild(n.createElement("h3")).textContent="Adjust this tab",i.holds(t,o.rdf("type"),o.meeting("Tool"))){const a=l.sym("https://solid.github.io/solid-panes/meeting/meetingDetailsForm.ttl#settings");r.widgets.appendForm(document,e,{},t,a,p.doc(),m),r.widgets.deleteButtonWithCheck(n,e,"tab",function(){const e=i.the(p,o.meeting("toolList"));for(let n=0;n<e.elements.length;n++)if(e.elements[n].sameTerm(t)){e.elements.splice(n,1);break}const n=i.any(t,o.meeting("target")),a=i.statementsMatching(t).concat(i.statementsMatching(void 0,void 0,t)).concat(i.statementsMatching(p,void 0,n));i.remove(a),x()}).setAttribute("style","width: 1.5em; height: 1.5em;")}else e.appendChild(n.createElement("h4")).textContent="(No adjustments available)"},V.backgroundColor=i.anyValue(e,o.ui("backgroundColor"))||"#ddddcc";const $=y.appendChild(r.tabs.tabWidget(V));return r.aclControl.preventBrowserDropEvents(n),r.widgets.makeDropTarget($.tabContainer,E,F),r.widgets.makeDropTarget(U,E,F),h}};return s})());
|
|
20527
|
+
!function(e,t){ true?module.exports=t(__webpack_require__(500),__webpack_require__(8230),__webpack_require__(9332)):0}(this,(e,t,n)=>(()=>{"use strict";var i={264(e){e.exports=t},663(e){e.exports=n},426(t){t.exports=e}},o={};function a(e){var t=o[e];if(void 0!==t)return t.exports;var n=o[e]={exports:{}};return i[e](n,n.exports,a),n.exports}a.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return a.d(t,{a:t}),t},a.d=(e,t)=>{for(var n in t)a.o(t,n)&&!a.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var s={};a.r(s),a.d(s,{default:()=>p});var r=a(426),l=a(264),d=a(663);const{typeIndex:c}=d.solidLogicSingleton,{loadTypeIndexesFor:u}=c,m=r.ns,p={icon:r.icons.iconBase+"noun_66617.svg",name:"meeting",audience:[m.solid("PowerUser")],label:function(e,t){const n=t.session.store,i=r.ns;return n.holds(e,i.rdf("type"),i.meeting("Meeting"))?"Meeting":null},mintClass:r.ns.meeting("Meeting"),mintNew:function(e,t){return new Promise(function(n,i){const o=e.session.store,a=r.ns;t.newInstance=t.newInstance||o.sym(t.newBase+"index.ttl#this");const s=t.newInstance,c=s.doc(),u=d.authn.currentUser();u&&o.add(s,a.dc("author"),u,c),o.add(s,a.rdf("type"),a.meeting("Meeting"),c),o.add(s,a.dc("created"),new Date,c),o.add(s,a.ui("backgroundColor"),new l.Literal("#ddddcc",void 0,a.xsd("color")),c);const m=new l.Collection;o.add(s,a.meeting("toolList"),m,c),m.elements.push(s),o.updater.put(c,o.statementsMatching(void 0,void 0,void 0,c),"text/turtle",function(e,o,a){o?n(t):i(new Error("Error writing meeting configuration: "+a))})})},render:function(e,t){const n=t.dom,i=t.session.store,o=r.ns,a=i.updater,s=this,c=function(e,t){console.log(e);const i=n.createElement("pre");i.setAttribute("style","background-color: "+t||0),h.appendChild(i),i.appendChild(n.createTextNode(e))},m=function(e,t){e||c(t)},p=e,g=e.doc(),f=e.dir().uri,h=n.createElement("div"),b=h.appendChild(n.createElement("table"));b.style="width: 100%; height: 100%; margin:0;";const w=b.appendChild(n.createElement("tr"));w.appendChild(n.createElement("div"));const y=b.appendChild(n.createElement("tr")),v=b.appendChild(n.createElement("td")).appendChild(n.createElement("table")).appendChild(n.createElement("tr"));w.setAttribute("style","height: 2em;");let C=null;const x=function(){a.put(g,i.statementsMatching(void 0,void 0,void 0,g),"text/turtle",function(e,t,n){t?($.refresh(),z()):c(n="FAILED to save new thing at: "+g+" : "+n)})},k=function(e,t,n){const s=t.doc();n&&i.add(p,n,t,s),i.add(t,o.meeting("parentMeeting"),p,s),a.put(s,i.statementsMatching(void 0,void 0,void 0,s),"text/turtle",function(e,n,i){n?x():c("FAILED to save new tool at: "+t+" : "+i)})},T=function(e,t,n,a){t&&i.add(p,t,e,g);const s=r.widgets.newThing(g);return n&&i.add(s,o.rdfs("label"),n,g),a&&i.add(s,o.meeting("icon"),i.sym(a),g),i.add(s,o.rdf("type"),o.meeting("Tool"),g),i.add(s,o.meeting("target"),e,g),i.the(p,o.meeting("toolList")).elements.push(s),s};function A(e){const t=/https:\/\/www\.google\..*\/maps\//,n="https://www.google.com/maps/embed/v1/",i=e.uri;if(!i.match(t))return e;if(i.startsWith(n))return e;const o=i.replace(t,n)+"&key=AIzaSyB8aaT6bY9tcLCmc2oPCkdUYLmTOWM8R54";return console.log("Converted Google Map URI! "+o),l.sym(o)}const E=function(n){Promise.all(n.map(function(n){return function(n){return new Promise(function(a){console.log("Dropped on thing "+n);const s=n.uri;if(s.startsWith("http:")&&s.indexOf("#")<0)return function(n){const a=o.wf("attachment");i.add(e,a,n,e.doc()),P({icon:"noun_160581.svg",limit:1,shareTab:!0},{newInstance:e,pane:t.session.paneRegistry.byName("link"),predicate:o.meeting("attachmentTool"),tabTitle:"Links",view:"link",noIndexHTML:!0})}(n),a(n);i.fetcher.nowOrWhenFetched(n,function(e,t){function d(e){e=A(e),console.log("make web page attachement tab "+e);const t=T(e,r.ns.wf("attachment"),r.utils.label(e),null);return i.add(t,r.ns.meeting("view"),"iframe",g),a(e)}if(e){const e=n,t=i.findTypeURIs(e);for(const e in t)console.log(" drop object type includes: "+e);if(o.vcard("Individual").uri in t||o.foaf("Person").uri in t||o.foaf("Agent").uri in t)return function(e){const t=i.any(e,o.foaf("preferredURI")),n=t?i.sym(t):e,a=i.any(p,o.meeting("attendeeGroup")),s=function(e,t){const n=[l.st(t,r.ns.vcard("hasMember"),e,t.doc())],a=i.any(e,o.vcard("fn"))||i.any(e,o.foaf("name"));a&&n.push(l.st(e,r.ns.vcard("fn"),a,t.doc())),i.fetcher.nowOrWhenFetched(t.doc(),void 0,function(o,a){o?i.updater.update([],n,function(t,n,i){m(n,i),n&&console.log("Addded to particpants OK: "+e)}):c("Can't read group to add person"+t)})};a?s(n,a):I().then(function(e){const t=e.newInstance;s(n,t),i.fetcher.putBack(g,{contentType:"text/turtle"}).then(function(e){console.log("Particiants Group created: "+t)})}).catch(function(e){c(e)})}(n),a(n);if(s.startsWith("https:")&&s.indexOf("#")<0){const e=i.fetcher.getHeader(n,"x-frame-options");let t=!0;if(e)for(let n=0;n<e.length;n++)console.log("x-frame-options: "+e[n]),e[n].indexOf("sameorigin")<0&&(t=!1),e[n].indexOf("deny")<0&&(t=!1);if(t)return function(e){const t=T(e,r.ns.wf("attachment"),r.utils.label(e),null);i.add(t,r.ns.meeting("view"),"iframe",g)}(n=A(n)),a(n)}return console.log("Default: assume web page attachement "+n),d(n)}return console.log("Error looking up dropped thing, will just add it anyway. "+n+": "+t),d(n)})})}(l.sym(n))})).then(function(e){x()})},F=function(e){r.widgets.uploadFiles(i.fetcher,e,p.dir().uri+"Files",p.dir().uri+"Pictures",function(e,t){e.type.startsWith("image/")?L("Files"):M("Pictures")})},L=function(e){return P({icon:"noun_598334.svg",limit:1,shareTab:!0},{newInstance:i.sym(p.dir().uri+e+"/"),pane:t.session.paneRegistry.byName("folder"),predicate:o.meeting("pictures"),shareTab:!0,tabTitle:e,view:"slideshow",noIndexHTML:!0})},M=function(e){return P({icon:"noun_681601.svg",limit:1,shareTab:!0},{newInstance:i.sym(p.dir().uri+"Files/"),pane:t.session.paneRegistry.byName("folder"),predicate:o.meeting("materialsFolder"),tabTitle:"Materials",noIndexHTML:!0})},I=function(){return P({icon:"noun_339237.svg",limit:1,shareTab:!0},{newInstance:i.sym(p.dir().uri+"Attendees/index.ttl#this"),pane:t.session.paneRegistry.byName("contact"),predicate:o.meeting("attendeeGroup"),tabTitle:"Attendees",instanceClass:o.vcard("Group"),instanceName:r.utils.label(e)+" attendees",noIndexHTML:!0})};function P(e,n){return new Promise(function(i,o){const a=t.session.store;if(!n.useExisting){const t=a.any(p,n.predicate);if(t){if(e.limit&&1===e.limit&&!e.shareTab)return c("Already have "+t+" as "+r.utils.label(n.predicate)),c("Cant have two"),i(null);if(e.shareTab)return console.log("Using existing "+t+" as "+r.utils.label(n.predicate)),i({me:C,newInstance:t,instanceClass:n.instanceClass})}}C||n.me||o(new Error("Username not defined for new tool")),n.me=n.me||C,n.newInstance=n.useExisting||n.newInstance||a.sym(n.newBase+"index.ttl#this"),n.pane.mintNew(t,n).then(function(e){const t=T(e.newInstance,e.predicate,e.tabTitle,e.pane.icon);e.view&&a.add(t,r.ns.meeting("view"),e.view,g),x(),a.fetcher.putBack(g,{contentType:"text/turtle"}).then(function(t){i(e)}).catch(function(e){o(e)})}).catch(function(e){c(e),o(e)})})}const _=function(){const e=r.login.selectWorkspace(n,{noun:"meeting"},function(i,o){s.mintNew(t,{newBase:o}).then(function(t){const i=t.newInstance;R.removeChild(e);const o=R.appendChild(n.createElement("p"));o.setAttribute("style","font-size: 140%;"),o.innerHTML="Your <a target='_blank' href='"+i.uri+"'><b>new meeting</b></a> is ready to be set up. <br/><br/><a target='_blank' href='"+i.uri+"'>Go to your new meeting.</a>"}).catch(function(t){R.removeChild(e),R.appendChild(r.widgets.errorMessageBlock(n,t))})});R.appendChild(e)},S=[{icon:"noun_339237.svg",maker:function(e){const n=f+"Group/",i=t.session.store;let a=i.any(p,o.meeting("particpants"));a||(a=l.sym(n+"index.ttl#this")),console.log("Participant group: "+a);const s=T(a,o.meeting("particpants"),"Particpants",r.icons.iconBase+"noun_339237.svg");i.add(s,r.ns.meeting("view"),"peoplePicker",g),x()},hint:"Make a group of people",limit:1},{icon:"noun_346777.svg",maker:function(e){return P(e,{useExisting:p,pane:t.session.paneRegistry.byName("schedule"),view:"schedule",tabTitle:"Schedule poll",noIndexHTML:!0})},hint:"Make a poll to schedule the meeting"},{icon:"noun_48218.svg",maker:function(e){},limit:1,hint:"Add an agenda list",disabled:!0},{icon:"noun_79217.svg",maker:function(e){return P(e,{newBase:f+"SharedNotes/",predicate:r.ns.meeting("sharedNotes"),tabTitle:"Shared Notes",pane:t.session.paneRegistry.byName("pad")})},hint:"Add a shared notepad"},{icon:"noun_346319.svg",maker:function(e){const n=f+"Chat/",i=t.session.store;if(i.holds(p,o.meeting("chat")))return void console.log("Ignored - already have chat");const a=i.sym(n+"chat.ttl");i.add(a,o.rdf("type"),o.meeting("Chat"),a),T(a,o.meeting("chat"),"Chat",r.icons.iconBase+"noun_346319.svg"),k(0,a,o.meeting("chat"))},limit:1,hint:"Add a chat channel for the meeting"},{icon:"noun_17020.svg",maker:function(e){const n=f+"Actions/",i=t.session.store;if(i.holds(p,o.meeting("actions")))return void console.log("Ignored - already have actions");const a=i.sym(n+"config.ttl"),s=i.sym(n+"config.ttl#this"),l=i.sym(n+"state.ttl");i.add(s,o.dc("title"),(i.anyValue(p,o.cal("summary"))||"Meeting ")+" actions",a),i.add(s,o.wf("issueClass"),o.wf("Task"),a),i.add(s,o.wf("initialState"),o.wf("Open"),a),i.add(s,o.wf("stateStore"),l,a),i.add(s,o.wf("assigneeClass"),o.foaf("Person"),a),i.add(s,o.rdf("type"),o.wf("Tracker"),a),i.add(s,o.rdf("type"),o.wf("Tracker"),a),T(s,o.meeting("actions"),"Actions",r.icons.iconBase+"noun_17020.svg"),k(0,s,o.meeting("actions"))},limit:1,hint:"Add a list of action items"},{icon:"noun_260227.svg",maker:function(e){const n=t.session.store,i=l.sym("https://meet.jit.si/"+r.utils.genUuid());if(n.holds(p,o.meeting("videoCallPage")))return void console.log("Ignored - already have a videoCallPage");n.add(i,o.rdf("type"),o.meeting("VideoCallPage"),g);const a=T(i,o.meeting("videoCallPage"),"Video call",r.icons.iconBase+"noun_260227.svg");n.add(a,o.meeting("view"),"iframe",g),x()},limit:1,hint:"Add a video call for the meeting"},{icon:"noun_25830.svg",maker:function(e){r.widgets.askName(n,i,R,o.log("uri"),r.ns.rdf("Resource")).then(function(e){if(!e)return z();const n=t.session.store,i=r.ns,o=n.sym(e),a=T(o,i.wf("attachment"),r.utils.label(o),null);n.add(a,i.meeting("view"),"iframe",g),x()}).catch(function(e){c("Error making new sub-meeting: "+e)})},hint:"Attach meeting materials",disabled:!1},{icon:"noun_123691.svg",maker:function(e){const n=t.session.store,i=r.ns,o=p.dir();if(e.limit&&1===e.limit&&n.holds(p,i.wf("sharingControl")))return void c("Ignored - already have "+r.utils.label(V.predicate));const a=T(o,i.wf("sharingControl"),"Sharing",r.icons.iconBase+"noun_123691.svg");n.add(a,i.meeting("view"),"sharing",g),x()},limit:1,hint:"Control Sharing",disabled:!1},{icon:"noun_66617.svg",maker:function(e){r.widgets.askName(n,i,R,o.foaf("name"),r.ns.meeting("Meeting")).then(function(n){if(!n)return z();const i=encodeURIComponent(n),o={newBase:f+i+"/",predicate:r.ns.meeting("subMeeting"),tabTitle:n,pane:t.session.paneRegistry.byName("meeting")};return P(e,o)}).catch(function(e){c("Error making new sub-meeting: "+e)})},hint:"Make a sub meeting",disabled:!1}],N=l.sym("https://solid.github.io/solid-panes/meeting/meetingDetailsForm.ttl#settings");l.parse('@prefix : <http://www.w3.org/ns/ui#> .\n@prefix f: <#> .\n@prefix dc: <http://purl.org/dc/elements/1.1/>.\n@prefix cal: <http://www.w3.org/2002/12/cal/ical#>.\n@prefix meeting: <http://www.w3.org/ns/pim/meeting#>.\n@prefix ns: <http://www.w3.org/2006/vcard/ns#> .\n@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .\n@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.\n@prefix te: <http://purl.org/dc/terms/> .\n@prefix dc: <http://purl.org/dc/elements/1.1/>.\n@prefix xsd: <http://www.w3.org/2001/XMLSchema#>.\n@prefix ui: <http://www.w3.org/ns/ui#>.\n\n f:main a :Form;\n cal:summary "Meeting Details";\n :part f:titleField, f:locationField, f:startField,\n f:endField, f:eventComment, f:colorField .\n\n f:titleField a :SingleLineTextField;\n :maxLength 256;\n :property cal:summary;\n :label "Name of meeting";\n :size 80 .\n\n f:locationField a :SingleLineTextField;\n :maxLength 128;\n :property cal:location;\n :size 40 .\n\n f:startField a :DateField;\n :label "Start";\n :property cal:dtstart .\n\n f:endField a :DateField;\n :label "End";\n :property cal:dtend .\n\n f:colorField a :ColorField;\n :label "Tab color";\n # :default "#ddddcc"^^xsd:color;\n :property ui:backgroundColor .\n\n f:eventComment\n a ui:MultiLineTextField;\n # ui:maxLength\n # "1048";\n # ui:size\n # "40".\n ui:property\n cal:comment.\n\n###################################################\n\nf:settings a :Form;\n dc:title "Tab settings";\n :part f:labelField, f:targetField, f:viewField.\n\n f:labelField a :SingleLineTextField;\n :maxLength 128;\n :property rdfs:label;\n :label "Label on tab";\n :size 40 .\n\n f:targetField a :NamedNodeURIField;\n :maxLength 1024; # Longer?\n :property meeting:target;\n :label "URL of resource";\n :size 80 .\n\n f:colorField2 a :ColorField;\n :label "Tab color";\n # :default "#ddddcc"^^xsd:color;\n :property ui:backgroundColor .\n\n f:viewField a :SingleLineTextField;\n :maxLength 128;\n :property meeting:view;\n :label "View mode (experts only)";\n :size 40 .\n\n#\n',i,N.doc().uri,"text/turtle");const B="padding: 1em; width: 3em; height: 3em;",U=v.appendChild(n.createElement("td")),R=v.appendChild(n.createElement("td")),D=U.appendChild(n.createElement("img"));let O=!1;D.setAttribute("src",r.icons.iconBase+"noun_19460_green.svg"),D.setAttribute("style",B+"opacity: 50%;"),D.setAttribute("title","Add another tool to the meeting");const j=function(e){O=!O,D.setAttribute("style",B+(O?"background-color: yellow;":"")),H(O?"":"display: none;")};let G;d.authn.checkUser().then(e=>{if(e)return C=e,D.addEventListener("click",j),void D.setAttribute("style",B);G=r.login.loginStatusBox(n,e=>{e?(C=i.sym(e),R.removeChild(G),D.addEventListener("click",j),D.setAttribute("style",B)):(console.log("(Logged out)"),C=null)}),G.setAttribute("style","margin: 0.5em 1em;"),R.appendChild(G)});const W=[];for(let e=0;e<S.length;e++)(function(){const t=S[e],i=U.appendChild(n.createElement("img"));i.setAttribute("src",r.icons.iconBase+t.icon),i.setAttribute("style",B+"display: none;"),W.push(i),i.tool=t;const o=t.maker;t.disabled||i.addEventListener("click",function(e){q(i),o(t)})})();const H=function(e){for(let t=0;t<W.length;t++){let n=B+e;S[t].disabled&&(n+="opacity: 0.3;"),W[t].setAttribute("style",n)}},z=function(){H("display: none;"),D.setAttribute("style",B)},q=function(e){H("display: none;"),e.setAttribute("style",B+"background-color: yellow;")},V={dom:n};V.predicate=o.meeting("toolList"),V.subject=e,V.ordered=!0,V.orientation=1,V.renderMain=function(e,a){let s,m=null,f=null;e.innerHTML="";const h=function(t,n){t||(e.textContent=""+n)},b=function(){e.appendChild(n.createElement("h3")).textContent="Details of meeting";const t=l.sym("https://solid.github.io/solid-panes/meeting/meetingDetailsForm.ttl#main");r.widgets.appendForm(document,e,{},p,t,p.doc(),h),e.appendChild(function(){const e=n.createElement("div"),t=e.appendChild(n.createElement("p"));return t.setAttribute("style","margin: 0em; padding:3em; color: #888;"),t.textContent="Tip: Drag URL-bar icons of web pages into the tab bar on the left to add new meeting materials.",e}()),C=d.authn.currentUser(),C&&i.add(p,o.dc("author"),C,g);const a={noun:"meeting",me:C,statusArea:e,div:e,dom:n};r.login.registrationControl(a,p,o.meeting("Meeting")).then(function(e){console.log("Registration control finsished.")}),r.pad.manageParticipation(n,e,g,p,C,{});const s="height: 2em; width: 2em; margin:0.5em;",c=e.appendChild(n.createElement("div")),u=c.appendChild(n.createElement("img"));u.setAttribute("src",r.icons.iconBase+"noun_145978.svg"),u.setAttribute("title","Make a fresh new meeting"),u.addEventListener("click",_),u.setAttribute("style",s);const m=c.appendChild(n.createElement("a"));m.setAttribute("href","https://github.com/solid/solid-panes"),m.setAttribute("target","_blank");const f=m.appendChild(n.createElement("img"));f.setAttribute("src",r.icons.iconBase+"noun_368567.svg"),f.setAttribute("title","Fork me on github"),f.setAttribute("style",s+"opacity: 50%;")};if(i.holds(a,o.rdf("type"),o.meeting("Tool"))){const g=i.any(a,o.meeting("target"));if(g.sameTerm(p)&&!i.any(a,o.meeting("view")))b();else{let h=i.any(a,o.meeting("view"));h=h?h.value:null,"details"===h?b():"peoplePicker"===h?function(){const t={div:e,dom:n};e.appendChild(n.createElement("h4")).textContent="Meeting Participants";const a=function(e){const t=[l.st(p,o.meeting("particpantGroup"),e,p.doc())];i.updater.update([],t,function(t,n,i){n?f=e:c("Cant save participants group: "+i)})};f=i.any(p,o.meeting("particpantGroup")),d.authn.checkUser().then(e=>{e&&u(i.sym(e)).then(function(){const e={defaultNewGroupName:"Meeting Participants",selectedGroup:f};new r.widgets.PeoplePicker(t.div,t.index.private[0],a,e).render()})})}():"iframe"===h?function(t){const i=e.appendChild(n.createElement("iframe"));i.setAttribute("src",t.uri),i.setAttribute("style","border: none; margin: 0; padding: 0; height: 100%; width: 100%;"),i.setAttribute("allow","microphone camera"),i.setAttribute("name","disable-x-frame-options"),e.style.padding=0}(g):(m=h?t.session.paneRegistry.byName(h):null,s=e.appendChild(n.createElement("table")),s.style.width="100%",t.getOutliner(n).GotoSubject(g,!0,m,!1,void 0,s))}}else a.sameTerm(p)?b():(!a.sameTerm(a.doc())||i.holds(a,r.ns.rdf("type"),r.ns.meeting("Chat"))||i.holds(a,r.ns.rdf("type"),r.ns.meeting("PaneView")))&&(s=e.appendChild(n.createElement("table")),t.getOutliner(n).GotoSubject(a,!0,void 0,!1,void 0,s))},V.renderTab=function(e,t){if(i.holds(t,o.rdf("type"),o.meeting("Tool"))){const a=i.any(t,o.meeting("target"));let s=i.any(t,o.rdfs("label"));s=s?s.value:r.utils.label(a);const l=e.appendChild(n.createElement("div"));l.textContent=s,l.setAttribute("style","margin-left: 0.7em");const d=i.any(t,o.meeting("icon"));if(d){const t=e.appendChild(n.createElement("table")).appendChild(n.createElement("tr")),i=t.appendChild(n.createElement("td")),o=t.appendChild(n.createElement("td")),a=i.appendChild(n.createElement("img"));a.setAttribute("src",d.uri),a.setAttribute("style","width: 1.5em; height: 1.5em;"),a.setAttribute("title",s),o.appendChild(l)}else e.appendChild(l)}else e.textContent=r.utils.label(t)},V.renderTabSettings=function(e,t){if(e.innerHTML="",e.style+="border-color: #eed;",e.appendChild(n.createElement("h3")).textContent="Adjust this tab",i.holds(t,o.rdf("type"),o.meeting("Tool"))){const a=l.sym("https://solid.github.io/solid-panes/meeting/meetingDetailsForm.ttl#settings");r.widgets.appendForm(document,e,{},t,a,p.doc(),m),r.widgets.deleteButtonWithCheck(n,e,"tab",function(){const e=i.the(p,o.meeting("toolList"));for(let n=0;n<e.elements.length;n++)if(e.elements[n].sameTerm(t)){e.elements.splice(n,1);break}const n=i.any(t,o.meeting("target")),a=i.statementsMatching(t).concat(i.statementsMatching(void 0,void 0,t)).concat(i.statementsMatching(p,void 0,n));i.remove(a),x()}).setAttribute("style","width: 1.5em; height: 1.5em;")}else e.appendChild(n.createElement("h4")).textContent="(No adjustments available)"},V.backgroundColor=i.anyValue(e,o.ui("backgroundColor"))||"#ddddcc";const $=y.appendChild(r.tabs.tabWidget(V));return r.aclControl.preventBrowserDropEvents(n),r.widgets.makeDropTarget($.tabContainer,E,F),r.widgets.makeDropTarget(U,E,F),h}};return s})());
|
|
20475
20528
|
|
|
20476
20529
|
/***/ },
|
|
20477
20530
|
|
|
@@ -20875,6 +20928,16 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
20875
20928
|
// extracted by mini-css-extract-plugin
|
|
20876
20929
|
|
|
20877
20930
|
|
|
20931
|
+
/***/ },
|
|
20932
|
+
|
|
20933
|
+
/***/ 3824
|
|
20934
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
20935
|
+
|
|
20936
|
+
"use strict";
|
|
20937
|
+
__webpack_require__.r(__webpack_exports__);
|
|
20938
|
+
// extracted by mini-css-extract-plugin
|
|
20939
|
+
|
|
20940
|
+
|
|
20878
20941
|
/***/ },
|
|
20879
20942
|
|
|
20880
20943
|
/***/ 5576
|
|
@@ -41850,11 +41913,13 @@ const IRIs_RDF = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',
|
|
|
41850
41913
|
string: `${XSD}string`,
|
|
41851
41914
|
},
|
|
41852
41915
|
rdf: {
|
|
41853
|
-
type:
|
|
41854
|
-
nil:
|
|
41855
|
-
first:
|
|
41856
|
-
rest:
|
|
41857
|
-
langString:
|
|
41916
|
+
type: `${IRIs_RDF}type`,
|
|
41917
|
+
nil: `${IRIs_RDF}nil`,
|
|
41918
|
+
first: `${IRIs_RDF}first`,
|
|
41919
|
+
rest: `${IRIs_RDF}rest`,
|
|
41920
|
+
langString: `${IRIs_RDF}langString`,
|
|
41921
|
+
dirLangString: `${IRIs_RDF}dirLangString`,
|
|
41922
|
+
reifies: `${IRIs_RDF}reifies`,
|
|
41858
41923
|
},
|
|
41859
41924
|
owl: {
|
|
41860
41925
|
sameAs: 'http://www.w3.org/2002/07/owl#sameAs',
|
|
@@ -41892,6 +41957,7 @@ const lineModeRegExps = {
|
|
|
41892
41957
|
_unescapedIri: true,
|
|
41893
41958
|
_simpleQuotedString: true,
|
|
41894
41959
|
_langcode: true,
|
|
41960
|
+
_dircode: true,
|
|
41895
41961
|
_blank: true,
|
|
41896
41962
|
_newline: true,
|
|
41897
41963
|
_comment: true,
|
|
@@ -41909,15 +41975,16 @@ class N3Lexer {
|
|
|
41909
41975
|
this._unescapedIri = /^<([^\x00-\x20<>\\"\{\}\|\^\`]*)>[ \t]*/; // IRI without escape sequences; no unescaping
|
|
41910
41976
|
this._simpleQuotedString = /^"([^"\\\r\n]*)"(?=[^"])/; // string without escape sequences
|
|
41911
41977
|
this._simpleApostropheString = /^'([^'\\\r\n]*)'(?=[^'])/;
|
|
41912
|
-
this._langcode = /^@([a-z]+(?:-[a-z0-9]+)*)(?=[^a-z0-9
|
|
41978
|
+
this._langcode = /^@([a-z]+(?:-[a-z0-9]+)*)(?=[^a-z0-9])/i;
|
|
41979
|
+
this._dircode = /^--(ltr)|(rtl)/;
|
|
41913
41980
|
this._prefix = /^((?:[A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]|[\ud800-\udb7f][\udc00-\udfff])(?:\.?[\-0-9A-Z_a-z\xb7\xc0-\xd6\xd8-\xf6\xf8-\u037d\u037f-\u1fff\u200c\u200d\u203f\u2040\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]|[\ud800-\udb7f][\udc00-\udfff])*)?:(?=[#\s<])/;
|
|
41914
41981
|
this._prefixed = /^((?:[A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]|[\ud800-\udb7f][\udc00-\udfff])(?:\.?[\-0-9A-Z_a-z\xb7\xc0-\xd6\xd8-\xf6\xf8-\u037d\u037f-\u1fff\u200c\u200d\u203f\u2040\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]|[\ud800-\udb7f][\udc00-\udfff])*)?:((?:(?:[0-:A-Z_a-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]|[\ud800-\udb7f][\udc00-\udfff]|%[0-9a-fA-F]{2}|\\[!#-\/;=?\-@_~])(?:(?:[\.\-0-:A-Z_a-z\xb7\xc0-\xd6\xd8-\xf6\xf8-\u037d\u037f-\u1fff\u200c\u200d\u203f\u2040\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]|[\ud800-\udb7f][\udc00-\udfff]|%[0-9a-fA-F]{2}|\\[!#-\/;=?\-@_~])*(?:[\-0-:A-Z_a-z\xb7\xc0-\xd6\xd8-\xf6\xf8-\u037d\u037f-\u1fff\u200c\u200d\u203f\u2040\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]|[\ud800-\udb7f][\udc00-\udfff]|%[0-9a-fA-F]{2}|\\[!#-\/;=?\-@_~]))?)?)(?:[ \t]+|(?=\.?[,;!\^\s#()\[\]\{\}"'<>]))/;
|
|
41915
41982
|
this._variable = /^\?(?:(?:[A-Z_a-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]|[\ud800-\udb7f][\udc00-\udfff])(?:[\-0-:A-Z_a-z\xb7\xc0-\xd6\xd8-\xf6\xf8-\u037d\u037f-\u1fff\u200c\u200d\u203f\u2040\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]|[\ud800-\udb7f][\udc00-\udfff])*)(?=[.,;!\^\s#()\[\]\{\}"'<>])/;
|
|
41916
41983
|
this._blank = /^_:((?:[0-9A-Z_a-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]|[\ud800-\udb7f][\udc00-\udfff])(?:\.?[\-0-9A-Z_a-z\xb7\xc0-\xd6\xd8-\xf6\xf8-\u037d\u037f-\u1fff\u200c\u200d\u203f\u2040\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]|[\ud800-\udb7f][\udc00-\udfff])*)(?:[ \t]+|(?=\.?[,;:\s#()\[\]\{\}"'<>]))/;
|
|
41917
41984
|
this._number = /^[\-+]?(?:(\d+\.\d*|\.?\d+)[eE][\-+]?|\d*(\.)?)\d+(?=\.?[,;:\s#()\[\]\{\}"'<>])/;
|
|
41918
41985
|
this._boolean = /^(?:true|false)(?=[.,;\s#()\[\]\{\}"'<>])/;
|
|
41919
|
-
this.
|
|
41920
|
-
this.
|
|
41986
|
+
this._atKeyword = /^@[a-z]+(?=[\s#<:])/i;
|
|
41987
|
+
this._keyword = /^(?:PREFIX|BASE|VERSION|GRAPH)(?=[\s#<])/i;
|
|
41921
41988
|
this._shortPredicates = /^a(?=[\s#()\[\]\{\}"'<>])/;
|
|
41922
41989
|
this._newline = /^[ \t]*(?:#[^\n\r]*)?(?:\r\n|\n|\r)[ \t]*/;
|
|
41923
41990
|
this._comment = /#([^\n\r]*)/;
|
|
@@ -42022,8 +42089,11 @@ class N3Lexer {
|
|
|
42022
42089
|
return reportSyntaxError(this);
|
|
42023
42090
|
type = 'IRI';
|
|
42024
42091
|
}
|
|
42025
|
-
// Try to find a
|
|
42026
|
-
else if (input.length >
|
|
42092
|
+
// Try to find a triple term
|
|
42093
|
+
else if (input.length > 2 && input[1] === '<' && input[2] === '(')
|
|
42094
|
+
type = '<<(', matchLength = 3;
|
|
42095
|
+
// Try to find a reified triple
|
|
42096
|
+
else if (!this._lineMode && input.length > (inputFinished ? 1 : 2) && input[1] === '<')
|
|
42027
42097
|
type = '<<', matchLength = 2;
|
|
42028
42098
|
// Try to find a backwards implication arrow
|
|
42029
42099
|
else if (this._n3Mode && input.length > 1 && input[1] === '=') {
|
|
@@ -42034,6 +42104,7 @@ class N3Lexer {
|
|
|
42034
42104
|
break;
|
|
42035
42105
|
|
|
42036
42106
|
case '>':
|
|
42107
|
+
// Try to find a reified triple
|
|
42037
42108
|
if (input.length > 1 && input[1] === '>')
|
|
42038
42109
|
type = '>>', matchLength = 2;
|
|
42039
42110
|
break;
|
|
@@ -42089,10 +42160,10 @@ class N3Lexer {
|
|
|
42089
42160
|
|
|
42090
42161
|
case '@':
|
|
42091
42162
|
// Try to find a language code
|
|
42092
|
-
if (this._previousMarker === 'literal' && (match = this._langcode.exec(input)))
|
|
42163
|
+
if (this._previousMarker === 'literal' && (match = this._langcode.exec(input)) && match[1] !== 'version')
|
|
42093
42164
|
type = 'langcode', value = match[1];
|
|
42094
42165
|
// Try to find a keyword
|
|
42095
|
-
else if (match = this.
|
|
42166
|
+
else if (match = this._atKeyword.exec(input))
|
|
42096
42167
|
type = match[0];
|
|
42097
42168
|
break;
|
|
42098
42169
|
|
|
@@ -42117,6 +42188,13 @@ class N3Lexer {
|
|
|
42117
42188
|
case '9':
|
|
42118
42189
|
case '+':
|
|
42119
42190
|
case '-':
|
|
42191
|
+
if (input[1] === '-') {
|
|
42192
|
+
// Try to find a direction code
|
|
42193
|
+
if (this._previousMarker === 'langcode' && (match = this._dircode.exec(input)))
|
|
42194
|
+
type = 'dircode', matchLength = 2, value = (match[1] || match[2]), matchLength = value.length + 2;
|
|
42195
|
+
break;
|
|
42196
|
+
}
|
|
42197
|
+
|
|
42120
42198
|
// Try to find a number. Since it can contain (but not end with) a dot,
|
|
42121
42199
|
// we always need a non-dot character before deciding it is a number.
|
|
42122
42200
|
// Therefore, try inserting a space if we're at the end of the input.
|
|
@@ -42134,8 +42212,10 @@ class N3Lexer {
|
|
|
42134
42212
|
case 'P':
|
|
42135
42213
|
case 'G':
|
|
42136
42214
|
case 'g':
|
|
42215
|
+
case 'V':
|
|
42216
|
+
case 'v':
|
|
42137
42217
|
// Try to find a SPARQL-style keyword
|
|
42138
|
-
if (match = this.
|
|
42218
|
+
if (match = this._keyword.exec(input))
|
|
42139
42219
|
type = match[0].toUpperCase();
|
|
42140
42220
|
else
|
|
42141
42221
|
inconclusive = true;
|
|
@@ -42172,13 +42252,23 @@ class N3Lexer {
|
|
|
42172
42252
|
case '!':
|
|
42173
42253
|
if (!this._n3Mode)
|
|
42174
42254
|
break;
|
|
42255
|
+
case ')':
|
|
42256
|
+
if (!inputFinished && (input.length === 1 || (input.length === 2 && input[1] === '>'))) {
|
|
42257
|
+
// Don't consume yet, as it *could* become a triple term end.
|
|
42258
|
+
break;
|
|
42259
|
+
}
|
|
42260
|
+
// Try to find a triple term
|
|
42261
|
+
if (input.length > 2 && input[1] === '>' && input[2] === '>') {
|
|
42262
|
+
type = ')>>', matchLength = 3;
|
|
42263
|
+
break;
|
|
42264
|
+
}
|
|
42175
42265
|
case ',':
|
|
42176
42266
|
case ';':
|
|
42177
42267
|
case '[':
|
|
42178
42268
|
case ']':
|
|
42179
42269
|
case '(':
|
|
42180
|
-
case ')':
|
|
42181
42270
|
case '}':
|
|
42271
|
+
case '~':
|
|
42182
42272
|
if (!this._lineMode) {
|
|
42183
42273
|
matchLength = 1;
|
|
42184
42274
|
type = firstChar;
|
|
@@ -42489,8 +42579,18 @@ class N3DataFactory_Literal extends Term {
|
|
|
42489
42579
|
// Find the last quotation mark (e.g., '"abc"@en-us')
|
|
42490
42580
|
const id = this.id;
|
|
42491
42581
|
let atPos = id.lastIndexOf('"') + 1;
|
|
42582
|
+
const dirPos = id.lastIndexOf('--');
|
|
42492
42583
|
// If "@" it follows, return the remaining substring; empty otherwise
|
|
42493
|
-
return atPos < id.length && id[atPos++] === '@' ? id.substr(atPos).toLowerCase() : '';
|
|
42584
|
+
return atPos < id.length && id[atPos++] === '@' ? (dirPos > atPos ? id.substr(0, dirPos) : id).substr(atPos).toLowerCase() : '';
|
|
42585
|
+
}
|
|
42586
|
+
|
|
42587
|
+
// ### The direction of this literal
|
|
42588
|
+
get direction() {
|
|
42589
|
+
// Find the last double dash after the closing quote (e.g., '"abc"@en-us--ltr')
|
|
42590
|
+
const id = this.id;
|
|
42591
|
+
const endPos = id.lastIndexOf('"');
|
|
42592
|
+
const dirPos = id.lastIndexOf('--');
|
|
42593
|
+
return dirPos > endPos && dirPos + 2 < id.length ? id.substr(dirPos + 2).toLowerCase() : '';
|
|
42494
42594
|
}
|
|
42495
42595
|
|
|
42496
42596
|
// ### The datatype IRI of this literal
|
|
@@ -42505,8 +42605,8 @@ class N3DataFactory_Literal extends Term {
|
|
|
42505
42605
|
const char = dtPos < id.length ? id[dtPos] : '';
|
|
42506
42606
|
// If "^" it follows, return the remaining substring
|
|
42507
42607
|
return char === '^' ? id.substr(dtPos + 2) :
|
|
42508
|
-
// If "@" follows, return rdf:langString; xsd:string otherwise
|
|
42509
|
-
(char !== '@' ? N3DataFactory_xsd.string : N3DataFactory_rdf.langString);
|
|
42608
|
+
// If "@" follows, return rdf:langString or rdf:dirLangString; xsd:string otherwise
|
|
42609
|
+
(char !== '@' ? N3DataFactory_xsd.string : (id.indexOf('--', dtPos) > 0 ? N3DataFactory_rdf.dirLangString : N3DataFactory_rdf.langString));
|
|
42510
42610
|
}
|
|
42511
42611
|
|
|
42512
42612
|
// ### Returns whether this object represents the same term as the other
|
|
@@ -42520,14 +42620,16 @@ class N3DataFactory_Literal extends Term {
|
|
|
42520
42620
|
this.termType === other.termType &&
|
|
42521
42621
|
this.value === other.value &&
|
|
42522
42622
|
this.language === other.language &&
|
|
42623
|
+
((this.direction === other.direction) || (this.direction === '' && !other.direction)) &&
|
|
42523
42624
|
this.datatype.value === other.datatype.value;
|
|
42524
42625
|
}
|
|
42525
42626
|
|
|
42526
42627
|
toJSON() {
|
|
42527
42628
|
return {
|
|
42528
|
-
termType:
|
|
42529
|
-
value:
|
|
42530
|
-
language:
|
|
42629
|
+
termType: this.termType,
|
|
42630
|
+
value: this.value,
|
|
42631
|
+
language: this.language,
|
|
42632
|
+
direction: this.direction,
|
|
42531
42633
|
datatype: { termType: 'NamedNode', value: this.datatypeString },
|
|
42532
42634
|
};
|
|
42533
42635
|
}
|
|
@@ -42617,9 +42719,22 @@ function termFromId(id, factory, nested) {
|
|
|
42617
42719
|
return factory.literal(id.substr(1, id.length - 2));
|
|
42618
42720
|
// Literal with datatype or language
|
|
42619
42721
|
const endPos = id.lastIndexOf('"', id.length - 1);
|
|
42722
|
+
let languageOrDatatype;
|
|
42723
|
+
if (id[endPos + 1] === '@') {
|
|
42724
|
+
languageOrDatatype = id.substr(endPos + 2);
|
|
42725
|
+
const dashDashIndex = languageOrDatatype.lastIndexOf('--');
|
|
42726
|
+
if (dashDashIndex > 0 && dashDashIndex < languageOrDatatype.length) {
|
|
42727
|
+
languageOrDatatype = {
|
|
42728
|
+
language: languageOrDatatype.substr(0, dashDashIndex),
|
|
42729
|
+
direction: languageOrDatatype.substr(dashDashIndex + 2),
|
|
42730
|
+
};
|
|
42731
|
+
}
|
|
42732
|
+
}
|
|
42733
|
+
else {
|
|
42734
|
+
languageOrDatatype = factory.namedNode(id.substr(endPos + 3));
|
|
42735
|
+
}
|
|
42620
42736
|
return factory.literal(id.substr(1, endPos - 1),
|
|
42621
|
-
|
|
42622
|
-
: factory.namedNode(id.substr(endPos + 3)));
|
|
42737
|
+
languageOrDatatype);
|
|
42623
42738
|
case '[':
|
|
42624
42739
|
id = JSON.parse(id);
|
|
42625
42740
|
break;
|
|
@@ -42656,7 +42771,7 @@ function termToId(term, nested) {
|
|
|
42656
42771
|
case 'Variable': return `?${term.value}`;
|
|
42657
42772
|
case 'DefaultGraph': return '';
|
|
42658
42773
|
case 'Literal': return `"${term.value}"${
|
|
42659
|
-
term.language ? `@${term.language}` :
|
|
42774
|
+
term.language ? `@${term.language}${term.direction ? `--${term.direction}` : ''}` :
|
|
42660
42775
|
(term.datatype && term.datatype.value !== N3DataFactory_xsd.string ? `^^${term.datatype.value}` : '')}`;
|
|
42661
42776
|
case 'Quad':
|
|
42662
42777
|
const res = [
|
|
@@ -42751,6 +42866,11 @@ function literal(value, languageOrDataType) {
|
|
|
42751
42866
|
if (typeof languageOrDataType === 'string')
|
|
42752
42867
|
return new N3DataFactory_Literal(`"${value}"@${languageOrDataType.toLowerCase()}`);
|
|
42753
42868
|
|
|
42869
|
+
// Create a language-tagged string with base direction
|
|
42870
|
+
if (languageOrDataType !== undefined && !('termType' in languageOrDataType)) {
|
|
42871
|
+
return new N3DataFactory_Literal(`"${value}"@${languageOrDataType.language.toLowerCase()}${languageOrDataType.direction ? `--${languageOrDataType.direction.toLowerCase()}` : ''}`);
|
|
42872
|
+
}
|
|
42873
|
+
|
|
42754
42874
|
// Automatically determine datatype for booleans and numbers
|
|
42755
42875
|
let datatype = languageOrDataType ? languageOrDataType.value : '';
|
|
42756
42876
|
if (datatype === '') {
|
|
@@ -42848,8 +42968,6 @@ class N3Parser {
|
|
|
42848
42968
|
this._supportsQuads = !(isTurtle || isTriG || isNTriples || isN3);
|
|
42849
42969
|
// Whether the log:isImpliedBy predicate is supported
|
|
42850
42970
|
this._isImpliedBy = options.isImpliedBy;
|
|
42851
|
-
// Support nesting of triples
|
|
42852
|
-
this._supportsRDFStar = format === '' || /star|\*$/.test(format);
|
|
42853
42971
|
// Disable relative IRIs in N-Triples or N-Quads mode
|
|
42854
42972
|
if (isLineMode)
|
|
42855
42973
|
this._resolveRelativeIRI = iri => { return null; };
|
|
@@ -42858,6 +42976,9 @@ class N3Parser {
|
|
|
42858
42976
|
this._lexer = options.lexer || new N3Lexer({ lineMode: isLineMode, n3: isN3, isImpliedBy: this._isImpliedBy });
|
|
42859
42977
|
// Disable explicit quantifiers by default
|
|
42860
42978
|
this._explicitQuantifiers = !!options.explicitQuantifiers;
|
|
42979
|
+
// Disable parsing of unsupported versions by default
|
|
42980
|
+
this._parseUnsupportedVersions = !!options.parseUnsupportedVersions;
|
|
42981
|
+
this._version = options.version;
|
|
42861
42982
|
}
|
|
42862
42983
|
|
|
42863
42984
|
// ## Static class methods
|
|
@@ -42935,6 +43056,13 @@ class N3Parser {
|
|
|
42935
43056
|
}
|
|
42936
43057
|
}
|
|
42937
43058
|
|
|
43059
|
+
// ### `_readBeforeTopContext` is called once only at the start of parsing.
|
|
43060
|
+
_readBeforeTopContext(token) {
|
|
43061
|
+
if (this._version && !this._isValidVersion(this._version))
|
|
43062
|
+
return this._error(`Detected unsupported version as media type parameter: "${this._version}"`, token);
|
|
43063
|
+
return this._readInTopContext(token);
|
|
43064
|
+
}
|
|
43065
|
+
|
|
42938
43066
|
// ### `_readInTopContext` reads a token when in the top context
|
|
42939
43067
|
_readInTopContext(token) {
|
|
42940
43068
|
switch (token.type) {
|
|
@@ -42954,6 +43082,11 @@ class N3Parser {
|
|
|
42954
43082
|
this._sparqlStyle = true;
|
|
42955
43083
|
case '@base':
|
|
42956
43084
|
return this._readBaseIRI;
|
|
43085
|
+
// It could be a version declaration
|
|
43086
|
+
case 'VERSION':
|
|
43087
|
+
this._sparqlStyle = true;
|
|
43088
|
+
case '@version':
|
|
43089
|
+
return this._readVersion;
|
|
42957
43090
|
// It could be a graph
|
|
42958
43091
|
case '{':
|
|
42959
43092
|
if (this._supportsNamedGraphs) {
|
|
@@ -43018,6 +43151,10 @@ class N3Parser {
|
|
|
43018
43151
|
this._subject = this._factory.blankNode(), null, null);
|
|
43019
43152
|
return this._readBlankNodeHead;
|
|
43020
43153
|
case '(':
|
|
43154
|
+
const stack = this._contextStack, parent = stack.length && stack[stack.length - 1];
|
|
43155
|
+
if (parent.type === '<<') {
|
|
43156
|
+
return this._error('Unexpected list in reified triple', token);
|
|
43157
|
+
}
|
|
43021
43158
|
// Start a new list
|
|
43022
43159
|
this._saveContext('list', this._graph, this.RDF_NIL, null, null);
|
|
43023
43160
|
this._subject = null;
|
|
@@ -43058,9 +43195,13 @@ class N3Parser {
|
|
|
43058
43195
|
this._subject = this._factory.literal(token.value, this._factory.namedNode(token.prefix));
|
|
43059
43196
|
|
|
43060
43197
|
break;
|
|
43198
|
+
case '<<(':
|
|
43199
|
+
if (!this._n3Mode)
|
|
43200
|
+
return this._error('Disallowed triple term as subject', token);
|
|
43201
|
+
this._saveContext('<<(', this._graph, null, null, null);
|
|
43202
|
+
this._graph = null;
|
|
43203
|
+
return this._readSubject;
|
|
43061
43204
|
case '<<':
|
|
43062
|
-
if (!this._supportsRDFStar)
|
|
43063
|
-
return this._error('Unexpected RDF-star syntax', token);
|
|
43064
43205
|
this._saveContext('<<', this._graph, null, null, null);
|
|
43065
43206
|
this._graph = null;
|
|
43066
43207
|
return this._readSubject;
|
|
@@ -43090,6 +43231,7 @@ class N3Parser {
|
|
|
43090
43231
|
case '.':
|
|
43091
43232
|
case ']':
|
|
43092
43233
|
case '}':
|
|
43234
|
+
case '|}':
|
|
43093
43235
|
// Expected predicate didn't come, must have been trailing semicolon
|
|
43094
43236
|
if (this._predicate === null)
|
|
43095
43237
|
return this._error(`Unexpected ${type}`, token);
|
|
@@ -43113,6 +43255,7 @@ class N3Parser {
|
|
|
43113
43255
|
if ((this._predicate = this._readEntity(token)) === undefined)
|
|
43114
43256
|
return;
|
|
43115
43257
|
}
|
|
43258
|
+
this._validAnnotation = true;
|
|
43116
43259
|
// The next token must be an object
|
|
43117
43260
|
return this._readObject;
|
|
43118
43261
|
}
|
|
@@ -43136,6 +43279,10 @@ class N3Parser {
|
|
|
43136
43279
|
this._subject = this._factory.blankNode());
|
|
43137
43280
|
return this._readBlankNodeHead;
|
|
43138
43281
|
case '(':
|
|
43282
|
+
const stack = this._contextStack, parent = stack.length && stack[stack.length - 1];
|
|
43283
|
+
if (parent.type === '<<') {
|
|
43284
|
+
return this._error('Unexpected list in reified triple', token);
|
|
43285
|
+
}
|
|
43139
43286
|
// Start a new list
|
|
43140
43287
|
this._saveContext('list', this._graph, this._subject, this._predicate, this.RDF_NIL);
|
|
43141
43288
|
this._subject = null;
|
|
@@ -43147,9 +43294,11 @@ class N3Parser {
|
|
|
43147
43294
|
this._saveContext('formula', this._graph, this._subject, this._predicate,
|
|
43148
43295
|
this._graph = this._factory.blankNode());
|
|
43149
43296
|
return this._readSubject;
|
|
43297
|
+
case '<<(':
|
|
43298
|
+
this._saveContext('<<(', this._graph, this._subject, this._predicate, null);
|
|
43299
|
+
this._graph = null;
|
|
43300
|
+
return this._readSubject;
|
|
43150
43301
|
case '<<':
|
|
43151
|
-
if (!this._supportsRDFStar)
|
|
43152
|
-
return this._error('Unexpected RDF-star syntax', token);
|
|
43153
43302
|
this._saveContext('<<', this._graph, this._subject, this._predicate, null);
|
|
43154
43303
|
this._graph = null;
|
|
43155
43304
|
return this._readSubject;
|
|
@@ -43185,6 +43334,10 @@ class N3Parser {
|
|
|
43185
43334
|
return this._readBlankNodeTail(token);
|
|
43186
43335
|
}
|
|
43187
43336
|
else {
|
|
43337
|
+
const stack = this._contextStack, parentParent = stack.length > 1 && stack[stack.length - 2];
|
|
43338
|
+
if (parentParent.type === '<<') {
|
|
43339
|
+
return this._error('Unexpected compound blank node expression in reified triple', token);
|
|
43340
|
+
}
|
|
43188
43341
|
this._predicate = null;
|
|
43189
43342
|
return this._readPredicate(token);
|
|
43190
43343
|
}
|
|
@@ -43294,6 +43447,11 @@ class N3Parser {
|
|
|
43294
43447
|
this._saveContext('formula', this._graph, this._subject, this._predicate,
|
|
43295
43448
|
this._graph = this._factory.blankNode());
|
|
43296
43449
|
return this._readSubject;
|
|
43450
|
+
case '<<':
|
|
43451
|
+
this._saveContext('<<', this._graph, null, null, null);
|
|
43452
|
+
this._graph = null;
|
|
43453
|
+
next = this._readSubject;
|
|
43454
|
+
break;
|
|
43297
43455
|
default:
|
|
43298
43456
|
if ((item = this._readEntity(token)) === undefined)
|
|
43299
43457
|
return;
|
|
@@ -43303,6 +43461,10 @@ class N3Parser {
|
|
|
43303
43461
|
if (list === null)
|
|
43304
43462
|
this._subject = list = this._factory.blankNode();
|
|
43305
43463
|
|
|
43464
|
+
// When reading a reified triple, store the list as subject in the stack, as this will be overridden when reading the triple.
|
|
43465
|
+
if (token.type === '<<')
|
|
43466
|
+
stack[stack.length - 1].subject = this._subject;
|
|
43467
|
+
|
|
43306
43468
|
// Is this the first element of the list?
|
|
43307
43469
|
if (previousList === null) {
|
|
43308
43470
|
// This list is either the subject or the object of its parent
|
|
@@ -43343,9 +43505,10 @@ class N3Parser {
|
|
|
43343
43505
|
}
|
|
43344
43506
|
|
|
43345
43507
|
// ### `_completeLiteral` completes a literal with an optional datatype or language
|
|
43346
|
-
_completeLiteral(token) {
|
|
43508
|
+
_completeLiteral(token, component) {
|
|
43347
43509
|
// Create a simple string literal by default
|
|
43348
43510
|
let literal = this._factory.literal(this._literalValue);
|
|
43511
|
+
let readCb;
|
|
43349
43512
|
|
|
43350
43513
|
switch (token.type) {
|
|
43351
43514
|
// Create a datatyped literal
|
|
@@ -43353,43 +43516,82 @@ class N3Parser {
|
|
|
43353
43516
|
case 'typeIRI':
|
|
43354
43517
|
const datatype = this._readEntity(token);
|
|
43355
43518
|
if (datatype === undefined) return; // No datatype means an error occurred
|
|
43519
|
+
if (datatype.value === IRIs.rdf.langString || datatype.value === IRIs.rdf.dirLangString) {
|
|
43520
|
+
return this._error('Detected illegal (directional) languaged-tagged string with explicit datatype', token);
|
|
43521
|
+
}
|
|
43356
43522
|
literal = this._factory.literal(this._literalValue, datatype);
|
|
43357
43523
|
token = null;
|
|
43358
43524
|
break;
|
|
43359
43525
|
// Create a language-tagged string
|
|
43360
43526
|
case 'langcode':
|
|
43527
|
+
if (token.value.split('-').some(t => t.length > 8))
|
|
43528
|
+
return this._error('Detected language tag with subtag longer than 8 characters', token);
|
|
43361
43529
|
literal = this._factory.literal(this._literalValue, token.value);
|
|
43530
|
+
this._literalLanguage = token.value;
|
|
43362
43531
|
token = null;
|
|
43532
|
+
readCb = this._readDirCode.bind(this, component);
|
|
43363
43533
|
break;
|
|
43364
43534
|
}
|
|
43365
43535
|
|
|
43366
|
-
return { token, literal };
|
|
43536
|
+
return { token, literal, readCb };
|
|
43537
|
+
}
|
|
43538
|
+
|
|
43539
|
+
_readDirCode(component, listItem, token) {
|
|
43540
|
+
// Attempt to read a dircode
|
|
43541
|
+
if (token.type === 'dircode') {
|
|
43542
|
+
const term = this._factory.literal(this._literalValue, { language: this._literalLanguage, direction: token.value });
|
|
43543
|
+
if (component === 'subject')
|
|
43544
|
+
this._subject = term;
|
|
43545
|
+
else
|
|
43546
|
+
this._object = term;
|
|
43547
|
+
this._literalLanguage = undefined;
|
|
43548
|
+
token = null;
|
|
43549
|
+
}
|
|
43550
|
+
|
|
43551
|
+
if (component === 'subject')
|
|
43552
|
+
return token === null ? this._readPredicateOrNamedGraph : this._readPredicateOrNamedGraph(token);
|
|
43553
|
+
return this._completeObjectLiteralPost(token, listItem);
|
|
43367
43554
|
}
|
|
43368
43555
|
|
|
43369
43556
|
// Completes a literal in subject position
|
|
43370
43557
|
_completeSubjectLiteral(token) {
|
|
43371
|
-
|
|
43558
|
+
const completed = this._completeLiteral(token, 'subject');
|
|
43559
|
+
this._subject = completed.literal;
|
|
43560
|
+
|
|
43561
|
+
// Postpone completion if the literal is only partially completed (such as lang+dir).
|
|
43562
|
+
if (completed.readCb)
|
|
43563
|
+
return completed.readCb.bind(this, false);
|
|
43564
|
+
|
|
43372
43565
|
return this._readPredicateOrNamedGraph;
|
|
43373
43566
|
}
|
|
43374
43567
|
|
|
43375
43568
|
// Completes a literal in object position
|
|
43376
43569
|
_completeObjectLiteral(token, listItem) {
|
|
43377
|
-
const completed = this._completeLiteral(token);
|
|
43570
|
+
const completed = this._completeLiteral(token, 'object');
|
|
43378
43571
|
if (!completed)
|
|
43379
43572
|
return;
|
|
43573
|
+
|
|
43380
43574
|
this._object = completed.literal;
|
|
43381
43575
|
|
|
43576
|
+
// Postpone completion if the literal is only partially completed (such as lang+dir).
|
|
43577
|
+
if (completed.readCb)
|
|
43578
|
+
return completed.readCb.bind(this, listItem);
|
|
43579
|
+
|
|
43580
|
+
return this._completeObjectLiteralPost(completed.token, listItem);
|
|
43581
|
+
}
|
|
43582
|
+
|
|
43583
|
+
_completeObjectLiteralPost(token, listItem) {
|
|
43382
43584
|
// If this literal was part of a list, write the item
|
|
43383
43585
|
// (we could also check the context stack, but passing in a flag is faster)
|
|
43384
43586
|
if (listItem)
|
|
43385
43587
|
this._emit(this._subject, this.RDF_FIRST, this._object, this._graph);
|
|
43386
43588
|
// If the token was consumed, continue with the rest of the input
|
|
43387
|
-
if (
|
|
43589
|
+
if (token === null)
|
|
43388
43590
|
return this._getContextEndReader();
|
|
43389
43591
|
// Otherwise, consume the token now
|
|
43390
43592
|
else {
|
|
43391
43593
|
this._readCallback = this._getContextEndReader();
|
|
43392
|
-
return this._readCallback(
|
|
43594
|
+
return this._readCallback(token);
|
|
43393
43595
|
}
|
|
43394
43596
|
}
|
|
43395
43597
|
|
|
@@ -43411,7 +43613,7 @@ class N3Parser {
|
|
|
43411
43613
|
|
|
43412
43614
|
// ### `_readPunctuation` reads punctuation between quads or quad parts
|
|
43413
43615
|
_readPunctuation(token) {
|
|
43414
|
-
let next, graph = this._graph;
|
|
43616
|
+
let next, graph = this._graph, startingAnnotation = false;
|
|
43415
43617
|
const subject = this._subject, inversePredicate = this._inversePredicate;
|
|
43416
43618
|
switch (token.type) {
|
|
43417
43619
|
// A closing brace ends a graph
|
|
@@ -43424,6 +43626,7 @@ class N3Parser {
|
|
|
43424
43626
|
// A dot just ends the statement, without sharing anything with the next
|
|
43425
43627
|
case '.':
|
|
43426
43628
|
this._subject = null;
|
|
43629
|
+
this._tripleTerm = null;
|
|
43427
43630
|
next = this._contextStack.length ? this._readSubject : this._readInTopContext;
|
|
43428
43631
|
if (inversePredicate) this._inversePredicate = false;
|
|
43429
43632
|
break;
|
|
@@ -43435,20 +43638,27 @@ class N3Parser {
|
|
|
43435
43638
|
case ',':
|
|
43436
43639
|
next = this._readObject;
|
|
43437
43640
|
break;
|
|
43641
|
+
// ~ is allowed in the annotation syntax
|
|
43642
|
+
case '~':
|
|
43643
|
+
next = this._readReifierInAnnotation;
|
|
43644
|
+
startingAnnotation = true;
|
|
43645
|
+
break;
|
|
43438
43646
|
// {| means that the current triple is annotated with predicate-object pairs.
|
|
43439
43647
|
case '{|':
|
|
43440
|
-
|
|
43441
|
-
|
|
43442
|
-
|
|
43443
|
-
|
|
43444
|
-
this._subject = this._factory.quad(subject, predicate, object, this.DEFAULTGRAPH);
|
|
43648
|
+
// Continue using the last triple as reified triple subject for the predicate-object pairs.
|
|
43649
|
+
this._subject = this._readTripleTerm();
|
|
43650
|
+
this._validAnnotation = false;
|
|
43651
|
+
startingAnnotation = true;
|
|
43445
43652
|
next = this._readPredicate;
|
|
43446
43653
|
break;
|
|
43447
|
-
// |} means that the current
|
|
43654
|
+
// |} means that the current reified triple in annotation syntax is finalized.
|
|
43448
43655
|
case '|}':
|
|
43449
|
-
if (this.
|
|
43450
|
-
return this._error('Unexpected
|
|
43656
|
+
if (!this._annotation)
|
|
43657
|
+
return this._error('Unexpected annotation syntax closing', token);
|
|
43658
|
+
if (!this._validAnnotation)
|
|
43659
|
+
return this._error('Annotation block can not be empty', token);
|
|
43451
43660
|
this._subject = null;
|
|
43661
|
+
this._annotation = false;
|
|
43452
43662
|
next = this._readPunctuation;
|
|
43453
43663
|
break;
|
|
43454
43664
|
default:
|
|
@@ -43460,13 +43670,16 @@ class N3Parser {
|
|
|
43460
43670
|
return this._error(`Expected punctuation to follow "${this._object.id}"`, token);
|
|
43461
43671
|
}
|
|
43462
43672
|
// A quad has been completed now, so return it
|
|
43463
|
-
if (subject !== null) {
|
|
43673
|
+
if (subject !== null && (!startingAnnotation || (startingAnnotation && !this._annotation))) {
|
|
43464
43674
|
const predicate = this._predicate, object = this._object;
|
|
43465
43675
|
if (!inversePredicate)
|
|
43466
43676
|
this._emit(subject, predicate, object, graph);
|
|
43467
43677
|
else
|
|
43468
43678
|
this._emit(object, predicate, subject, graph);
|
|
43469
43679
|
}
|
|
43680
|
+
if (startingAnnotation) {
|
|
43681
|
+
this._annotation = true;
|
|
43682
|
+
}
|
|
43470
43683
|
return next;
|
|
43471
43684
|
}
|
|
43472
43685
|
|
|
@@ -43524,6 +43737,23 @@ class N3Parser {
|
|
|
43524
43737
|
return this._readDeclarationPunctuation;
|
|
43525
43738
|
}
|
|
43526
43739
|
|
|
43740
|
+
// ### `_isValidVersion` checks if the given version is valid for this parser to handle.
|
|
43741
|
+
_isValidVersion(version) {
|
|
43742
|
+
return this._parseUnsupportedVersions || N3Parser.SUPPORTED_VERSIONS.includes(version);
|
|
43743
|
+
}
|
|
43744
|
+
|
|
43745
|
+
// ### `_readVersion` reads version string declaration
|
|
43746
|
+
_readVersion(token) {
|
|
43747
|
+
if (token.type !== 'literal')
|
|
43748
|
+
return this._error('Expected literal to follow version declaration', token);
|
|
43749
|
+
if ((token.end - token.start) !== token.value.length + 2)
|
|
43750
|
+
return this._error('Version declarations must use single quotes', token);
|
|
43751
|
+
this._versionCallback(token.value);
|
|
43752
|
+
if (!this._isValidVersion(token.value))
|
|
43753
|
+
return this._error(`Detected unsupported version: "${token.value}"`, token);
|
|
43754
|
+
return this._readDeclarationPunctuation;
|
|
43755
|
+
}
|
|
43756
|
+
|
|
43527
43757
|
// ### `_readNamedGraphLabel` reads the label of a named graph
|
|
43528
43758
|
_readNamedGraphLabel(token) {
|
|
43529
43759
|
switch (token.type) {
|
|
@@ -43672,25 +43902,15 @@ class N3Parser {
|
|
|
43672
43902
|
return this._readPath;
|
|
43673
43903
|
}
|
|
43674
43904
|
|
|
43675
|
-
|
|
43676
|
-
|
|
43677
|
-
if (token.type !== '>>')
|
|
43678
|
-
|
|
43679
|
-
if (this._supportsQuads && this._graph === null && (this._graph = this._readEntity(token)) !== undefined)
|
|
43680
|
-
return this._readRDFStarTail;
|
|
43681
|
-
return this._error(`Expected >> to follow "${this._object.id}"`, token);
|
|
43682
|
-
}
|
|
43683
|
-
return this._readRDFStarTail(token);
|
|
43684
|
-
}
|
|
43685
|
-
|
|
43686
|
-
// ### `_readRDFStarTail` reads the end of a nested RDF-star triple
|
|
43687
|
-
_readRDFStarTail(token) {
|
|
43688
|
-
if (token.type !== '>>')
|
|
43689
|
-
return this._error(`Expected >> but got ${token.type}`, token);
|
|
43905
|
+
// ### `_readTripleTermTail` reads the end of a triple term
|
|
43906
|
+
_readTripleTermTail(token) {
|
|
43907
|
+
if (token.type !== ')>>')
|
|
43908
|
+
return this._error(`Expected )>> but got ${token.type}`, token);
|
|
43690
43909
|
// Read the quad and restore the previous context
|
|
43691
43910
|
const quad = this._factory.quad(this._subject, this._predicate, this._object,
|
|
43692
|
-
|
|
43693
|
-
this._restoreContext('<<', token);
|
|
43911
|
+
this._graph || this.DEFAULTGRAPH);
|
|
43912
|
+
this._restoreContext('<<(', token);
|
|
43913
|
+
|
|
43694
43914
|
// If the triple was the subject, continue by reading the predicate.
|
|
43695
43915
|
if (this._subject === null) {
|
|
43696
43916
|
this._subject = quad;
|
|
@@ -43703,6 +43923,78 @@ class N3Parser {
|
|
|
43703
43923
|
}
|
|
43704
43924
|
}
|
|
43705
43925
|
|
|
43926
|
+
// ### `_readReifiedTripleTailOrReifier` reads a reifier or the end of a nested reified triple
|
|
43927
|
+
_readReifiedTripleTailOrReifier(token) {
|
|
43928
|
+
if (token.type === '~') {
|
|
43929
|
+
return this._readReifier;
|
|
43930
|
+
}
|
|
43931
|
+
return this._readReifiedTripleTail(token);
|
|
43932
|
+
}
|
|
43933
|
+
|
|
43934
|
+
// ### `_readReifiedTripleTail` reads the end of a nested reified triple
|
|
43935
|
+
_readReifiedTripleTail(token) {
|
|
43936
|
+
if (token.type !== '>>')
|
|
43937
|
+
return this._error(`Expected >> but got ${token.type}`, token);
|
|
43938
|
+
// Read the triple term and restore the previous context
|
|
43939
|
+
this._tripleTerm = null;
|
|
43940
|
+
const reifier = this._readTripleTerm();
|
|
43941
|
+
this._restoreContext('<<', token);
|
|
43942
|
+
|
|
43943
|
+
// // If we're in a list, continue processing that list
|
|
43944
|
+
const stack = this._contextStack, parent = stack.length && stack[stack.length - 1];
|
|
43945
|
+
if (parent && parent.type === 'list') {
|
|
43946
|
+
this._emit(this._subject, this.RDF_FIRST, reifier, this._graph);
|
|
43947
|
+
return this._getContextEndReader();
|
|
43948
|
+
}
|
|
43949
|
+
// If the triple was the subject, continue by reading the predicate.
|
|
43950
|
+
else if (this._subject === null) {
|
|
43951
|
+
this._subject = reifier;
|
|
43952
|
+
return this._readPredicateOrReifierTripleEnd;
|
|
43953
|
+
}
|
|
43954
|
+
// If the triple was the object, read context end.
|
|
43955
|
+
else {
|
|
43956
|
+
this._object = reifier;
|
|
43957
|
+
return this._getContextEndReader();
|
|
43958
|
+
}
|
|
43959
|
+
}
|
|
43960
|
+
|
|
43961
|
+
_readPredicateOrReifierTripleEnd(token) {
|
|
43962
|
+
if (token.type === '.') {
|
|
43963
|
+
this._subject = null;
|
|
43964
|
+
return this._readPunctuation(token);
|
|
43965
|
+
}
|
|
43966
|
+
return this._readPredicate(token);
|
|
43967
|
+
}
|
|
43968
|
+
|
|
43969
|
+
// ### `_readReifier` reads the triple term identifier after a tilde when in a reifying triple.
|
|
43970
|
+
_readReifier(token) {
|
|
43971
|
+
this._reifier = this._readEntity(token);
|
|
43972
|
+
return this._readReifiedTripleTail;
|
|
43973
|
+
}
|
|
43974
|
+
|
|
43975
|
+
// ### `_readReifier` reads the optional triple term identifier after a tilde when in annotation syntax.
|
|
43976
|
+
_readReifierInAnnotation(token) {
|
|
43977
|
+
// If next token is a reifier, read it as such.
|
|
43978
|
+
if (token.type === 'IRI' || token.type === 'typeIRI' || token.type === 'type' || token.type === 'prefixed' || token.type === 'blank' || token.type === 'var') {
|
|
43979
|
+
this._reifier = this._readEntity(token);
|
|
43980
|
+
return this._readPunctuation;
|
|
43981
|
+
}
|
|
43982
|
+
// Otherwise, emit and assert triple term.
|
|
43983
|
+
this._readTripleTerm();
|
|
43984
|
+
this._subject = null;
|
|
43985
|
+
return this._readPunctuation(token);
|
|
43986
|
+
}
|
|
43987
|
+
|
|
43988
|
+
_readTripleTerm() {
|
|
43989
|
+
const stack = this._contextStack, parent = stack.length && stack[stack.length - 1];
|
|
43990
|
+
const parentGraph = parent ? parent.graph : undefined;
|
|
43991
|
+
const reifier = this._reifier || this._factory.blankNode();
|
|
43992
|
+
this._reifier = null;
|
|
43993
|
+
this._tripleTerm = this._tripleTerm || this._factory.quad(this._subject, this._predicate, this._object);
|
|
43994
|
+
this._emit(reifier, this.RDF_REIFIES, this._tripleTerm, parentGraph || this.DEFAULTGRAPH);
|
|
43995
|
+
return reifier;
|
|
43996
|
+
}
|
|
43997
|
+
|
|
43706
43998
|
// ### `_getContextEndReader` gets the next reader function at the end of a context
|
|
43707
43999
|
_getContextEndReader() {
|
|
43708
44000
|
const contextStack = this._contextStack;
|
|
@@ -43716,8 +44008,10 @@ class N3Parser {
|
|
|
43716
44008
|
return this._readListItem;
|
|
43717
44009
|
case 'formula':
|
|
43718
44010
|
return this._readFormulaTail;
|
|
44011
|
+
case '<<(':
|
|
44012
|
+
return this._readTripleTermTail;
|
|
43719
44013
|
case '<<':
|
|
43720
|
-
return this.
|
|
44014
|
+
return this._readReifiedTripleTailOrReifier;
|
|
43721
44015
|
}
|
|
43722
44016
|
}
|
|
43723
44017
|
|
|
@@ -43832,27 +44126,30 @@ class N3Parser {
|
|
|
43832
44126
|
// ## Public methods
|
|
43833
44127
|
|
|
43834
44128
|
// ### `parse` parses the N3 input and emits each parsed quad through the onQuad callback.
|
|
43835
|
-
parse(input, quadCallback, prefixCallback) {
|
|
44129
|
+
parse(input, quadCallback, prefixCallback, versionCallback) {
|
|
43836
44130
|
// The second parameter accepts an object { onQuad: ..., onPrefix: ..., onComment: ...}
|
|
43837
44131
|
// As a second and third parameter it still accepts a separate quadCallback and prefixCallback for backward compatibility as well
|
|
43838
|
-
let onQuad, onPrefix, onComment;
|
|
43839
|
-
if (quadCallback && (quadCallback.onQuad || quadCallback.onPrefix || quadCallback.onComment)) {
|
|
44132
|
+
let onQuad, onPrefix, onComment, onVersion;
|
|
44133
|
+
if (quadCallback && (quadCallback.onQuad || quadCallback.onPrefix || quadCallback.onComment || quadCallback.onVersion)) {
|
|
43840
44134
|
onQuad = quadCallback.onQuad;
|
|
43841
44135
|
onPrefix = quadCallback.onPrefix;
|
|
43842
44136
|
onComment = quadCallback.onComment;
|
|
44137
|
+
onVersion = quadCallback.onVersion;
|
|
43843
44138
|
}
|
|
43844
44139
|
else {
|
|
43845
44140
|
onQuad = quadCallback;
|
|
43846
44141
|
onPrefix = prefixCallback;
|
|
44142
|
+
onVersion = versionCallback;
|
|
43847
44143
|
}
|
|
43848
44144
|
// The read callback is the next function to be executed when a token arrives.
|
|
43849
44145
|
// We start reading in the top context.
|
|
43850
|
-
this._readCallback = this.
|
|
44146
|
+
this._readCallback = this._readBeforeTopContext;
|
|
43851
44147
|
this._sparqlStyle = false;
|
|
43852
44148
|
this._prefixes = Object.create(null);
|
|
43853
44149
|
this._prefixes._ = this._blankNodePrefix ? this._blankNodePrefix.substr(2)
|
|
43854
44150
|
: `b${blankNodePrefix++}_`;
|
|
43855
44151
|
this._prefixCallback = onPrefix || noop;
|
|
44152
|
+
this._versionCallback = onVersion || noop;
|
|
43856
44153
|
this._inversePredicate = false;
|
|
43857
44154
|
this._quantified = Object.create(null);
|
|
43858
44155
|
|
|
@@ -43908,11 +44205,12 @@ function initDataFactory(parser, factory) {
|
|
|
43908
44205
|
parser.DEFAULTGRAPH = factory.defaultGraph();
|
|
43909
44206
|
|
|
43910
44207
|
// Set common named nodes
|
|
43911
|
-
parser.RDF_FIRST
|
|
43912
|
-
parser.RDF_REST
|
|
43913
|
-
parser.RDF_NIL
|
|
43914
|
-
parser.
|
|
43915
|
-
parser.
|
|
44208
|
+
parser.RDF_FIRST = factory.namedNode(IRIs.rdf.first);
|
|
44209
|
+
parser.RDF_REST = factory.namedNode(IRIs.rdf.rest);
|
|
44210
|
+
parser.RDF_NIL = factory.namedNode(IRIs.rdf.nil);
|
|
44211
|
+
parser.RDF_REIFIES = factory.namedNode(IRIs.rdf.reifies);
|
|
44212
|
+
parser.N3_FORALL = factory.namedNode(IRIs.r.forAll);
|
|
44213
|
+
parser.N3_FORSOME = factory.namedNode(IRIs.r.forSome);
|
|
43916
44214
|
parser.ABBREVIATIONS = {
|
|
43917
44215
|
'a': factory.namedNode(IRIs.rdf.type),
|
|
43918
44216
|
'=': factory.namedNode(IRIs.owl.sameAs),
|
|
@@ -43921,6 +44219,11 @@ function initDataFactory(parser, factory) {
|
|
|
43921
44219
|
};
|
|
43922
44220
|
parser.QUANTIFIERS_GRAPH = factory.namedNode('urn:n3:quantifiers');
|
|
43923
44221
|
}
|
|
44222
|
+
N3Parser.SUPPORTED_VERSIONS = [
|
|
44223
|
+
'1.2',
|
|
44224
|
+
'1.2-basic',
|
|
44225
|
+
'1.1',
|
|
44226
|
+
];
|
|
43924
44227
|
initDataFactory(N3Parser.prototype, N3DataFactory);
|
|
43925
44228
|
|
|
43926
44229
|
;// ./node_modules/n3/src/N3Util.js
|
|
@@ -44280,8 +44583,9 @@ class N3Writer {
|
|
|
44280
44583
|
value = value.replace(escapeAll, characterReplacer);
|
|
44281
44584
|
|
|
44282
44585
|
// Write a language-tagged literal
|
|
44586
|
+
const direction = literal.direction ? `--${literal.direction}` : '';
|
|
44283
44587
|
if (literal.language)
|
|
44284
|
-
return `"${value}"@${literal.language}`;
|
|
44588
|
+
return `"${value}"@${literal.language}${direction}`;
|
|
44285
44589
|
|
|
44286
44590
|
// Write dedicated literals per data type
|
|
44287
44591
|
if (this._lineMode) {
|
|
@@ -44336,11 +44640,11 @@ class N3Writer {
|
|
|
44336
44640
|
|
|
44337
44641
|
// ### `_encodeQuad` encodes an RDF-star quad
|
|
44338
44642
|
_encodeQuad({ subject, predicate, object, graph }) {
|
|
44339
|
-
return
|
|
44643
|
+
return `<<(${
|
|
44340
44644
|
this._encodeSubject(subject)} ${
|
|
44341
44645
|
this._encodePredicate(predicate)} ${
|
|
44342
44646
|
this._encodeObject(object)}${
|
|
44343
|
-
N3Util_isDefaultGraph(graph) ? '' : ` ${this._encodeIriOrBlank(graph)}`}>>`;
|
|
44647
|
+
N3Util_isDefaultGraph(graph) ? '' : ` ${this._encodeIriOrBlank(graph)}`})>>`;
|
|
44344
44648
|
}
|
|
44345
44649
|
|
|
44346
44650
|
// ### `_blockedWrite` replaces `_write` after the writer has been closed
|
|
@@ -70070,7 +70374,6 @@ const RDFXMLPane = exports.RDFXMLPane = {
|
|
|
70070
70374
|
};
|
|
70071
70375
|
|
|
70072
70376
|
// ends
|
|
70073
|
-
//# sourceMappingURL=RDFXMLPane.js.map
|
|
70074
70377
|
|
|
70075
70378
|
/***/ },
|
|
70076
70379
|
|
|
@@ -70259,7 +70562,6 @@ var _default = exports["default"] = {
|
|
|
70259
70562
|
return div;
|
|
70260
70563
|
}
|
|
70261
70564
|
}; // ends
|
|
70262
|
-
//# sourceMappingURL=audioPane.js.map
|
|
70263
70565
|
|
|
70264
70566
|
/***/ },
|
|
70265
70567
|
|
|
@@ -70358,7 +70660,6 @@ const classInstancePane = exports.classInstancePane = {
|
|
|
70358
70660
|
}
|
|
70359
70661
|
};
|
|
70360
70662
|
// ends
|
|
70361
|
-
//# sourceMappingURL=classInstancePane.js.map
|
|
70362
70663
|
|
|
70363
70664
|
/***/ },
|
|
70364
70665
|
|
|
@@ -70512,7 +70813,6 @@ function createSection(container, dom, title) {
|
|
|
70512
70813
|
titleElement.innerText = title;
|
|
70513
70814
|
return section;
|
|
70514
70815
|
}
|
|
70515
|
-
//# sourceMappingURL=basicPreferences.js.map
|
|
70516
70816
|
|
|
70517
70817
|
/***/ },
|
|
70518
70818
|
|
|
@@ -70587,7 +70887,6 @@ function buildHomePage(container, subject) {
|
|
|
70587
70887
|
(0, _homepage.generateHomepage)(subject, _solidLogic.store, _solidLogic.store.fetcher).then(homepage => shadow.appendChild(homepage));
|
|
70588
70888
|
}
|
|
70589
70889
|
var _default = exports["default"] = dashboardPane;
|
|
70590
|
-
//# sourceMappingURL=dashboardPane.js.map
|
|
70591
70890
|
|
|
70592
70891
|
/***/ },
|
|
70593
70892
|
|
|
@@ -70667,7 +70966,6 @@ async function loadProfile(subject, store, fetcher) {
|
|
|
70667
70966
|
function getName(store, ownersProfile) {
|
|
70668
70967
|
return store.anyValue(ownersProfile, _solidUi.ns.vcard('fn'), null, ownersProfile.doc()) || store.anyValue(ownersProfile, _solidUi.ns.foaf('name'), null, ownersProfile.doc()) || new URL(ownersProfile.uri).host.split('.')[0];
|
|
70669
70968
|
}
|
|
70670
|
-
//# sourceMappingURL=homepage.js.map
|
|
70671
70969
|
|
|
70672
70970
|
/***/ },
|
|
70673
70971
|
|
|
@@ -70932,7 +71230,6 @@ const dataContentPane = exports.dataContentPane = {
|
|
|
70932
71230
|
return div;
|
|
70933
71231
|
}
|
|
70934
71232
|
};
|
|
70935
|
-
//# sourceMappingURL=dataContentPane.js.map
|
|
70936
71233
|
|
|
70937
71234
|
/***/ },
|
|
70938
71235
|
|
|
@@ -71014,7 +71311,6 @@ const defaultPane = exports.defaultPane = {
|
|
|
71014
71311
|
};
|
|
71015
71312
|
|
|
71016
71313
|
// ends
|
|
71017
|
-
//# sourceMappingURL=defaultPane.js.map
|
|
71018
71314
|
|
|
71019
71315
|
/***/ },
|
|
71020
71316
|
|
|
@@ -71096,7 +71392,6 @@ var _default = exports["default"] = {
|
|
|
71096
71392
|
|
|
71097
71393
|
// render: removed - now handled by humanReadablePane with appropriate dokieli icon
|
|
71098
71394
|
}; // ends
|
|
71099
|
-
//# sourceMappingURL=dokieliPane.js.map
|
|
71100
71395
|
|
|
71101
71396
|
/***/ },
|
|
71102
71397
|
|
|
@@ -71131,7 +71426,6 @@ const DOKIELI_TEMPLATE = `<!DOCTYPE html>
|
|
|
71131
71426
|
</html>
|
|
71132
71427
|
`;
|
|
71133
71428
|
var _default = exports["default"] = DOKIELI_TEMPLATE;
|
|
71134
|
-
//# sourceMappingURL=new.js.map
|
|
71135
71429
|
|
|
71136
71430
|
/***/ },
|
|
71137
71431
|
|
|
@@ -71323,7 +71617,6 @@ const formPane = exports.formPane = {
|
|
|
71323
71617
|
return box;
|
|
71324
71618
|
}
|
|
71325
71619
|
};
|
|
71326
|
-
//# sourceMappingURL=pane.js.map
|
|
71327
71620
|
|
|
71328
71621
|
/***/ },
|
|
71329
71622
|
|
|
@@ -71403,7 +71696,6 @@ const HomePaneSource = {
|
|
|
71403
71696
|
|
|
71404
71697
|
// ends
|
|
71405
71698
|
var _default = exports["default"] = HomePaneSource;
|
|
71406
|
-
//# sourceMappingURL=homePane.js.map
|
|
71407
71699
|
|
|
71408
71700
|
/***/ },
|
|
71409
71701
|
|
|
@@ -71617,7 +71909,6 @@ const humanReadablePane = {
|
|
|
71617
71909
|
}
|
|
71618
71910
|
};
|
|
71619
71911
|
var _default = exports["default"] = humanReadablePane; // ends
|
|
71620
|
-
//# sourceMappingURL=humanReadablePane.js.map
|
|
71621
71912
|
|
|
71622
71913
|
/***/ },
|
|
71623
71914
|
|
|
@@ -71694,7 +71985,6 @@ const imagePane = exports.imagePane = {
|
|
|
71694
71985
|
};
|
|
71695
71986
|
|
|
71696
71987
|
// ends
|
|
71697
|
-
//# sourceMappingURL=imagePane.js.map
|
|
71698
71988
|
|
|
71699
71989
|
/***/ },
|
|
71700
71990
|
|
|
@@ -71810,7 +72100,6 @@ if (typeof window !== 'undefined') {
|
|
|
71810
72100
|
getOutliner
|
|
71811
72101
|
};
|
|
71812
72102
|
}
|
|
71813
|
-
//# sourceMappingURL=index.js.map
|
|
71814
72103
|
|
|
71815
72104
|
/***/ },
|
|
71816
72105
|
|
|
@@ -72001,7 +72290,6 @@ function isProtectedUri(subject) {
|
|
|
72001
72290
|
return subject.uri === siteUri || subject.uri === siteUri + 'profile/' || subject.uri === siteUri + 'profile/card' || subject.uri === siteUri + 'settings/' || subject.uri === siteUri + 'settings/prefs.ttl' || subject.uri === siteUri + 'settings/privateTypeIndex.ttl' || subject.uri === siteUri + 'settings/publicTypeIndex.ttl' || subject.uri === siteUri + 'settings/serverSide.ttl';
|
|
72002
72291
|
}
|
|
72003
72292
|
var _default = exports["default"] = pane; // ends
|
|
72004
|
-
//# sourceMappingURL=internalPane.js.map
|
|
72005
72293
|
|
|
72006
72294
|
/***/ },
|
|
72007
72295
|
|
|
@@ -72030,7 +72318,6 @@ function setFooterOptions() {
|
|
|
72030
72318
|
solidProjectName: SOLID_PROJECT_NAME
|
|
72031
72319
|
};
|
|
72032
72320
|
}
|
|
72033
|
-
//# sourceMappingURL=footer.js.map
|
|
72034
72321
|
|
|
72035
72322
|
/***/ },
|
|
72036
72323
|
|
|
@@ -72123,7 +72410,6 @@ async function openDashboardPane(outliner, pane) {
|
|
|
72123
72410
|
pane
|
|
72124
72411
|
});
|
|
72125
72412
|
}
|
|
72126
|
-
//# sourceMappingURL=header.js.map
|
|
72127
72413
|
|
|
72128
72414
|
/***/ },
|
|
72129
72415
|
|
|
@@ -72155,7 +72441,6 @@ async function initMainPage(store, uri) {
|
|
|
72155
72441
|
const footer = (0, _footer.createFooter)(store);
|
|
72156
72442
|
return Promise.all([header, footer]);
|
|
72157
72443
|
}
|
|
72158
|
-
//# sourceMappingURL=index.js.map
|
|
72159
72444
|
|
|
72160
72445
|
/***/ },
|
|
72161
72446
|
|
|
@@ -72219,7 +72504,6 @@ const n3Pane = exports.n3Pane = {
|
|
|
72219
72504
|
return div;
|
|
72220
72505
|
}
|
|
72221
72506
|
};
|
|
72222
|
-
//# sourceMappingURL=n3Pane.js.map
|
|
72223
72507
|
|
|
72224
72508
|
/***/ },
|
|
72225
72509
|
|
|
@@ -72245,7 +72529,6 @@ function createContext(dom, paneRegistry, store, logic) {
|
|
|
72245
72529
|
}
|
|
72246
72530
|
};
|
|
72247
72531
|
}
|
|
72248
|
-
//# sourceMappingURL=context.js.map
|
|
72249
72532
|
|
|
72250
72533
|
/***/ },
|
|
72251
72534
|
|
|
@@ -72260,6 +72543,7 @@ Object.defineProperty(exports, "__esModule", ({
|
|
|
72260
72543
|
}));
|
|
72261
72544
|
exports["default"] = _default;
|
|
72262
72545
|
var paneRegistry = _interopRequireWildcard(__webpack_require__(4059));
|
|
72546
|
+
__webpack_require__(3824);
|
|
72263
72547
|
var $rdf = _interopRequireWildcard(__webpack_require__(8230));
|
|
72264
72548
|
var UI = _interopRequireWildcard(__webpack_require__(500));
|
|
72265
72549
|
var _solidLogic = __webpack_require__(9332);
|
|
@@ -72406,8 +72690,12 @@ function _default(context) {
|
|
|
72406
72690
|
|
|
72407
72691
|
this.outlineObjectTD = function outlineObjectTD(obj, view, deleteNode, statement) {
|
|
72408
72692
|
const td = dom.createElement('td');
|
|
72409
|
-
td.
|
|
72693
|
+
td.classList.add('obj');
|
|
72410
72694
|
td.setAttribute('notSelectable', 'false');
|
|
72695
|
+
td.style.margin = '0.2em';
|
|
72696
|
+
td.style.border = 'none';
|
|
72697
|
+
td.style.padding = '0';
|
|
72698
|
+
td.style.verticalAlign = 'top';
|
|
72411
72699
|
const theClass = 'obj';
|
|
72412
72700
|
|
|
72413
72701
|
// set about and put 'expand' icon
|
|
@@ -72416,7 +72704,6 @@ function _default(context) {
|
|
|
72416
72704
|
td.appendChild(UI.utils.AJARImage(UI.icons.originalIconBase + 'tbl-expand-trans.png', 'expand', undefined, dom)).addEventListener('click', expandMouseDownListener);
|
|
72417
72705
|
}
|
|
72418
72706
|
td.setAttribute('class', theClass); // this is how you find an object
|
|
72419
|
-
// @@ TAKE CSS OUT OF STYLE SHEET
|
|
72420
72707
|
if (kb.whether(obj, UI.ns.rdf('type'), UI.ns.link('Request'))) {
|
|
72421
72708
|
td.className = 'undetermined';
|
|
72422
72709
|
} // @@? why-timbl
|
|
@@ -72462,7 +72749,7 @@ function _default(context) {
|
|
|
72462
72749
|
// if (kb.statementsMatching(predicate,rdf('type'), UI.ns.link('Request')).length) predicateTD.className='undetermined';
|
|
72463
72750
|
|
|
72464
72751
|
const labelTD = dom.createElement('TD');
|
|
72465
|
-
labelTD.
|
|
72752
|
+
labelTD.classList.add('labelTD');
|
|
72466
72753
|
labelTD.setAttribute('notSelectable', 'true');
|
|
72467
72754
|
labelTD.appendChild(dom.createTextNode(lab));
|
|
72468
72755
|
predicateTD.appendChild(labelTD);
|
|
@@ -72536,7 +72823,7 @@ function _default(context) {
|
|
|
72536
72823
|
const me = _solidLogic.authn.currentUser();
|
|
72537
72824
|
if (!me) return [];
|
|
72538
72825
|
const div = dom.createElement('div');
|
|
72539
|
-
const [
|
|
72826
|
+
const [pods] = await Promise.all([getPods()]);
|
|
72540
72827
|
return [{
|
|
72541
72828
|
paneName: 'home',
|
|
72542
72829
|
label: 'Your stuff',
|
|
@@ -72553,7 +72840,7 @@ function _default(context) {
|
|
|
72553
72840
|
paneName: 'editProfile',
|
|
72554
72841
|
label: 'Edit your Profile',
|
|
72555
72842
|
icon: UI.icons.iconBase + 'noun_492246.svg'
|
|
72556
|
-
}].concat(
|
|
72843
|
+
}].concat(pods);
|
|
72557
72844
|
async function getPods() {
|
|
72558
72845
|
async function addPodStorage(pod) {
|
|
72559
72846
|
// namedNode
|
|
@@ -72922,7 +73209,7 @@ function _default(context) {
|
|
|
72922
73209
|
const table = d.parentNode;
|
|
72923
73210
|
const par = table.parentNode;
|
|
72924
73211
|
const placeholder = dom.createElement('table');
|
|
72925
|
-
placeholder.
|
|
73212
|
+
placeholder.classList.add('placeholderTable');
|
|
72926
73213
|
par.replaceChild(placeholder, table);
|
|
72927
73214
|
table.removeChild(d);
|
|
72928
73215
|
par.replaceChild(table, placeholder); // Attempt to
|
|
@@ -72935,7 +73222,7 @@ function _default(context) {
|
|
|
72935
73222
|
if (!table) {
|
|
72936
73223
|
// Create a new property table
|
|
72937
73224
|
table = dom.createElement('table');
|
|
72938
|
-
table.
|
|
73225
|
+
table.classList.add('tableFullWidth');
|
|
72939
73226
|
expandedHeaderTR(subject, pane, options).then(tr1 => {
|
|
72940
73227
|
table.appendChild(tr1);
|
|
72941
73228
|
if (tr1.firstPane) {
|
|
@@ -74232,7 +74519,7 @@ function _default(context) {
|
|
|
74232
74519
|
} else if (obj.termType === 'Collection') {
|
|
74233
74520
|
// obj.elements is an array of the elements in the collection
|
|
74234
74521
|
rep = dom.createElement('table');
|
|
74235
|
-
rep.
|
|
74522
|
+
rep.classList.add('tableFullWidth');
|
|
74236
74523
|
rep.setAttribute('about', obj.toNT());
|
|
74237
74524
|
/* Not sure which looks best -- with or without. I think without
|
|
74238
74525
|
var tr = rep.appendChild(document.createElement('tr'));
|
|
@@ -74243,7 +74530,7 @@ function _default(context) {
|
|
|
74243
74530
|
const elt = obj.elements[i];
|
|
74244
74531
|
const row = rep.appendChild(dom.createElement('tr'));
|
|
74245
74532
|
const numcell = row.appendChild(dom.createElement('td'));
|
|
74246
|
-
numcell.
|
|
74533
|
+
numcell.classList.add('obj');
|
|
74247
74534
|
numcell.setAttribute('notSelectable', 'false');
|
|
74248
74535
|
numcell.setAttribute('about', obj.toNT());
|
|
74249
74536
|
numcell.innerHTML = i + 1 + ')';
|
|
@@ -74274,7 +74561,6 @@ function _default(context) {
|
|
|
74274
74561
|
|
|
74275
74562
|
return this;
|
|
74276
74563
|
} // END OF OUTLINE
|
|
74277
|
-
//# sourceMappingURL=manager.js.map
|
|
74278
74564
|
|
|
74279
74565
|
/***/ },
|
|
74280
74566
|
|
|
@@ -74408,7 +74694,6 @@ outlineIcons.termWidgets.optOn = new outlineIcons.OutlinerIcon(outlineIcons.src.
|
|
|
74408
74694
|
outlineIcons.termWidgets.optOff = new outlineIcons.OutlinerIcon(outlineIcons.src.icon_optoff, 20, 'opt off', 'Make this branch of your query optional.');
|
|
74409
74695
|
outlineIcons.termWidgets.addTri = new outlineIcons.OutlinerIcon(outlineIcons.src.icon_add_triple, 18, 'add tri', 'Add one');
|
|
74410
74696
|
// Ideally: "New "+label(subject)
|
|
74411
|
-
//# sourceMappingURL=outlineIcons.js.map
|
|
74412
74697
|
|
|
74413
74698
|
/***/ },
|
|
74414
74699
|
|
|
@@ -74459,7 +74744,6 @@ function viewsAddPropertyView(views, property, pviewfunc, isDefault) {
|
|
|
74459
74744
|
views.defaults[property] = pviewfunc;
|
|
74460
74745
|
}
|
|
74461
74746
|
} // viewsAddPropertyView
|
|
74462
|
-
//# sourceMappingURL=propertyViews.js.map
|
|
74463
74747
|
|
|
74464
74748
|
/***/ },
|
|
74465
74749
|
|
|
@@ -74752,7 +75036,6 @@ function QuerySource() {
|
|
|
74752
75036
|
}
|
|
74753
75037
|
};
|
|
74754
75038
|
}
|
|
74755
|
-
//# sourceMappingURL=queryByExample.js.map
|
|
74756
75039
|
|
|
74757
75040
|
/***/ },
|
|
74758
75041
|
|
|
@@ -76578,7 +76861,6 @@ function UserInput(outline) {
|
|
|
76578
76861
|
}
|
|
76579
76862
|
};
|
|
76580
76863
|
}
|
|
76581
|
-
//# sourceMappingURL=userInput.js.map
|
|
76582
76864
|
|
|
76583
76865
|
/***/ },
|
|
76584
76866
|
|
|
@@ -76600,7 +76882,6 @@ var _default = dom => function viewAsImage(obj) {
|
|
|
76600
76882
|
return img;
|
|
76601
76883
|
};
|
|
76602
76884
|
exports["default"] = _default;
|
|
76603
|
-
//# sourceMappingURL=viewAsImage.js.map
|
|
76604
76885
|
|
|
76605
76886
|
/***/ },
|
|
76606
76887
|
|
|
@@ -76629,7 +76910,6 @@ var _default = dom => function viewAsMbox(obj) {
|
|
|
76629
76910
|
return anchor;
|
|
76630
76911
|
};
|
|
76631
76912
|
exports["default"] = _default;
|
|
76632
|
-
//# sourceMappingURL=viewAsMbox.js.map
|
|
76633
76913
|
|
|
76634
76914
|
/***/ },
|
|
76635
76915
|
|
|
@@ -77047,7 +77327,6 @@ const paneDef = {
|
|
|
77047
77327
|
};
|
|
77048
77328
|
// ends
|
|
77049
77329
|
var _default = exports["default"] = paneDef;
|
|
77050
|
-
//# sourceMappingURL=padPane.js.map
|
|
77051
77330
|
|
|
77052
77331
|
/***/ },
|
|
77053
77332
|
|
|
@@ -77178,7 +77457,6 @@ var _default = exports["default"] = {
|
|
|
77178
77457
|
return div;
|
|
77179
77458
|
}
|
|
77180
77459
|
}; // ends
|
|
77181
|
-
//# sourceMappingURL=playlistPane.js.map
|
|
77182
77460
|
|
|
77183
77461
|
/***/ },
|
|
77184
77462
|
|
|
@@ -77331,7 +77609,6 @@ function registerPanes(register) {
|
|
|
77331
77609
|
|
|
77332
77610
|
// ENDS
|
|
77333
77611
|
}
|
|
77334
|
-
//# sourceMappingURL=registerPanes.js.map
|
|
77335
77612
|
|
|
77336
77613
|
/***/ },
|
|
77337
77614
|
|
|
@@ -77764,9 +78041,29 @@ const schedulePane = exports.schedulePane = {
|
|
|
77764
78041
|
const showForms = function () {
|
|
77765
78042
|
clearElement(naviCenter); // Remove refresh button if nec
|
|
77766
78043
|
const div = naviMain;
|
|
78044
|
+
|
|
78045
|
+
// form2 depends on sched:allDay; seed a local default for new polls
|
|
78046
|
+
if (!kb.any(subject, ns.sched('allDay'))) {
|
|
78047
|
+
kb.add(subject, ns.sched('allDay'), $rdf.literal('true', undefined, $rdf.sym('http://www.w3.org/2001/XMLSchema#boolean')), detailsDoc);
|
|
78048
|
+
}
|
|
77767
78049
|
const wizard = true;
|
|
77768
78050
|
let currentSlide = 0;
|
|
77769
78051
|
let gotDoneButton = false;
|
|
78052
|
+
const hasFormControls = function (container) {
|
|
78053
|
+
return !!container.querySelector('input, select, textarea, button');
|
|
78054
|
+
};
|
|
78055
|
+
const asBoolean = function (term, fallback) {
|
|
78056
|
+
if (!term) return fallback;
|
|
78057
|
+
const value = (term.value || '').toLowerCase();
|
|
78058
|
+
if (value === 'true' || value === '1') return true;
|
|
78059
|
+
if (value === 'false' || value === '0') return false;
|
|
78060
|
+
return fallback;
|
|
78061
|
+
};
|
|
78062
|
+
const renderTimeProposalFallback = function (slide) {
|
|
78063
|
+
const allDayValue = asBoolean(kb.any(subject, ns.sched('allDay')), true);
|
|
78064
|
+
const fallbackForm = kb.sym(formsURI + (allDayValue ? '#AllDayForm2' : '#NotAllDayForm2'));
|
|
78065
|
+
UI.widgets.appendForm(document, slide, {}, subject, fallbackForm, detailsDoc, complainIfBad);
|
|
78066
|
+
};
|
|
77770
78067
|
if (wizard) {
|
|
77771
78068
|
const forms = [form1, form2, form3];
|
|
77772
78069
|
const slides = [];
|
|
@@ -77774,6 +78071,11 @@ const schedulePane = exports.schedulePane = {
|
|
|
77774
78071
|
for (let f = 0; f < forms.length; f++) {
|
|
77775
78072
|
const slide = dom.createElement('div');
|
|
77776
78073
|
UI.widgets.appendForm(document, slide, {}, subject, forms[f], detailsDoc, complainIfBad);
|
|
78074
|
+
|
|
78075
|
+
// Some stores end up with form2's ui:Options unresolved; force a usable input form.
|
|
78076
|
+
if (f === 1 && !hasFormControls(slide)) {
|
|
78077
|
+
renderTimeProposalFallback(slide);
|
|
78078
|
+
}
|
|
77777
78079
|
slides.push(slide);
|
|
77778
78080
|
}
|
|
77779
78081
|
const refresh = function () {
|
|
@@ -77990,7 +78292,7 @@ const schedulePane = exports.schedulePane = {
|
|
|
77990
78292
|
|
|
77991
78293
|
// Read or create empty results file
|
|
77992
78294
|
function getResults() {
|
|
77993
|
-
fetcher.nowOrWhenFetched(resultsDoc.uri, (ok, body, response) => {
|
|
78295
|
+
fetcher.nowOrWhenFetched(resultsDoc.uri, undefined, (ok, body, response) => {
|
|
77994
78296
|
if (!ok) {
|
|
77995
78297
|
if (response.status === 404) {
|
|
77996
78298
|
// / Check explicitly for 404 error
|
|
@@ -78058,13 +78360,19 @@ const schedulePane = exports.schedulePane = {
|
|
|
78058
78360
|
options.set_x = kb.each(subject, ns.sched('option')); // @@@@@ option -> dtstart in future
|
|
78059
78361
|
options.set_x = options.set_x.map(function (opt) {
|
|
78060
78362
|
return kb.any(opt, ns.cal('dtstart'));
|
|
78363
|
+
}).filter(function (time) {
|
|
78364
|
+
return !!time;
|
|
78061
78365
|
});
|
|
78062
78366
|
options.set_y = kb.each(subject, ns.sched('response'));
|
|
78063
78367
|
options.set_y = options.set_y.map(function (resp) {
|
|
78064
78368
|
return kb.any(resp, ns.dc('author'));
|
|
78369
|
+
}).filter(function (author) {
|
|
78370
|
+
return !!author;
|
|
78065
78371
|
});
|
|
78066
78372
|
const possibleTimes = kb.each(invitation, ns.sched('option')).map(function (opt) {
|
|
78067
78373
|
return kb.any(opt, ns.cal('dtstart'));
|
|
78374
|
+
}).filter(function (time) {
|
|
78375
|
+
return !!time;
|
|
78068
78376
|
});
|
|
78069
78377
|
const displayTheMatrix = function () {
|
|
78070
78378
|
const matrix = div.appendChild(UI.matrix.matrixForQuery(dom, query, v.time, v.author, v.value, options, function () {}));
|
|
@@ -78121,6 +78429,7 @@ const schedulePane = exports.schedulePane = {
|
|
|
78121
78429
|
}; // @@ may need that
|
|
78122
78430
|
const selectOptions = {};
|
|
78123
78431
|
const predicate = ns.sched('availabilty');
|
|
78432
|
+
if (!x) return;
|
|
78124
78433
|
const cellSubject = dataPointForNT[x.toNT()];
|
|
78125
78434
|
const selector = UI.widgets.makeSelectForOptions(dom, kb, cellSubject, predicate, possibleAvailabilities, selectOptions, resultsDoc, callbackFunction);
|
|
78126
78435
|
cell.appendChild(selector);
|
|
@@ -78146,15 +78455,18 @@ const schedulePane = exports.schedulePane = {
|
|
|
78146
78455
|
const dps = kb.each(myResponse, ns.sched('cell'));
|
|
78147
78456
|
dps.forEach(function (dataPoint) {
|
|
78148
78457
|
const time = kb.any(dataPoint, ns.cal('dtstart'));
|
|
78458
|
+
if (!time) return;
|
|
78149
78459
|
dataPointForNT[time.toNT()] = dataPoint;
|
|
78150
78460
|
});
|
|
78151
78461
|
}
|
|
78152
78462
|
for (let j = 0; j < possibleTimes.length; j++) {
|
|
78153
|
-
|
|
78463
|
+
const possibleTime = possibleTimes[j];
|
|
78464
|
+
if (!possibleTime) continue;
|
|
78465
|
+
if (dataPointForNT[possibleTime.toNT()]) continue;
|
|
78154
78466
|
const dataPoint = $rdf.sym(id + '_' + j);
|
|
78155
78467
|
insertables.push($rdf.st(myResponse, ns.sched('cell'), dataPoint, doc));
|
|
78156
|
-
insertables.push($rdf.st(dataPoint, ns.cal('dtstart'),
|
|
78157
|
-
dataPointForNT[
|
|
78468
|
+
insertables.push($rdf.st(dataPoint, ns.cal('dtstart'), possibleTime, doc)); // @@
|
|
78469
|
+
dataPointForNT[possibleTime.toNT()] = dataPoint;
|
|
78158
78470
|
}
|
|
78159
78471
|
if (insertables.length) {
|
|
78160
78472
|
kb.updater.update([], insertables, function (uri, success, errorBody) {
|
|
@@ -78226,7 +78538,6 @@ const schedulePane = exports.schedulePane = {
|
|
|
78226
78538
|
} // render
|
|
78227
78539
|
}; // property list
|
|
78228
78540
|
// ends
|
|
78229
|
-
//# sourceMappingURL=schedulePane.js.map
|
|
78230
78541
|
|
|
78231
78542
|
/***/ },
|
|
78232
78543
|
|
|
@@ -78282,7 +78593,6 @@ const sharingPane = {
|
|
|
78282
78593
|
}
|
|
78283
78594
|
};
|
|
78284
78595
|
var _default = exports["default"] = sharingPane;
|
|
78285
|
-
//# sourceMappingURL=sharingPane.js.map
|
|
78286
78596
|
|
|
78287
78597
|
/***/ },
|
|
78288
78598
|
|
|
@@ -78369,7 +78679,6 @@ const slideshowPane = exports.slideshowPane = {
|
|
|
78369
78679
|
};
|
|
78370
78680
|
|
|
78371
78681
|
// ends
|
|
78372
|
-
//# sourceMappingURL=slideshowPane.js.map
|
|
78373
78682
|
|
|
78374
78683
|
/***/ },
|
|
78375
78684
|
|
|
@@ -78807,7 +79116,6 @@ const socialPane = exports.socialPane = {
|
|
|
78807
79116
|
} // render()
|
|
78808
79117
|
}; //
|
|
78809
79118
|
// ends
|
|
78810
|
-
//# sourceMappingURL=socialPane.js.map
|
|
78811
79119
|
|
|
78812
79120
|
/***/ },
|
|
78813
79121
|
|
|
@@ -78872,7 +79180,6 @@ const TabbedPane = {
|
|
|
78872
79180
|
}
|
|
78873
79181
|
};
|
|
78874
79182
|
var _default = exports["default"] = TabbedPane;
|
|
78875
|
-
//# sourceMappingURL=tabbedPane.js.map
|
|
78876
79183
|
|
|
78877
79184
|
/***/ },
|
|
78878
79185
|
|
|
@@ -78936,7 +79243,6 @@ const tableViewPane = exports.tableViewPane = {
|
|
|
78936
79243
|
return div;
|
|
78937
79244
|
}
|
|
78938
79245
|
};
|
|
78939
|
-
//# sourceMappingURL=tableViewPane.js.map
|
|
78940
79246
|
|
|
78941
79247
|
/***/ },
|
|
78942
79248
|
|
|
@@ -79421,7 +79727,6 @@ var _default = exports["default"] = {
|
|
|
79421
79727
|
return div;
|
|
79422
79728
|
}
|
|
79423
79729
|
}; // ends
|
|
79424
|
-
//# sourceMappingURL=pane.js.map
|
|
79425
79730
|
|
|
79426
79731
|
/***/ },
|
|
79427
79732
|
|
|
@@ -79752,7 +80057,6 @@ var _default = exports["default"] = {
|
|
|
79752
80057
|
return div;
|
|
79753
80058
|
}
|
|
79754
80059
|
}; // ends
|
|
79755
|
-
//# sourceMappingURL=period.js.map
|
|
79756
80060
|
|
|
79757
80061
|
/***/ },
|
|
79758
80062
|
|
|
@@ -79934,7 +80238,6 @@ var _default = exports["default"] = {
|
|
|
79934
80238
|
return div;
|
|
79935
80239
|
}
|
|
79936
80240
|
}; // ends
|
|
79937
|
-
//# sourceMappingURL=tripPane.js.map
|
|
79938
80241
|
|
|
79939
80242
|
/***/ },
|
|
79940
80243
|
|
|
@@ -80087,7 +80390,6 @@ function createModesInput({
|
|
|
80087
80390
|
}, {}, element => formElements.modes.push(element)), createText('span', mode)]);
|
|
80088
80391
|
});
|
|
80089
80392
|
}
|
|
80090
|
-
//# sourceMappingURL=trustedApplications.dom.js.map
|
|
80091
80393
|
|
|
80092
80394
|
/***/ },
|
|
80093
80395
|
|
|
@@ -80118,7 +80420,6 @@ function getStatementsToAdd(origin, nodeName, modes, person, ns) {
|
|
|
80118
80420
|
function generateRandomString() {
|
|
80119
80421
|
return Math.random().toString(36).substr(2, 5);
|
|
80120
80422
|
}
|
|
80121
|
-
//# sourceMappingURL=trustedApplications.utils.js.map
|
|
80122
80423
|
|
|
80123
80424
|
/***/ },
|
|
80124
80425
|
|
|
@@ -80181,7 +80482,6 @@ async function render(dom, main, statusArea) {
|
|
|
80181
80482
|
main.appendChild((0, _trustedApplications.createText)('p', 'Application URLs must be valid URL. Examples are http://localhost:3000, https://trusted.app, and https://sub.trusted.app.'));
|
|
80182
80483
|
}
|
|
80183
80484
|
var _default = exports["default"] = trustedApplicationView;
|
|
80184
|
-
//# sourceMappingURL=trustedApplications.view.js.map
|
|
80185
80485
|
|
|
80186
80486
|
/***/ },
|
|
80187
80487
|
|
|
@@ -80335,7 +80635,6 @@ var _default = exports["default"] = {
|
|
|
80335
80635
|
return box;
|
|
80336
80636
|
}
|
|
80337
80637
|
}; // ends
|
|
80338
|
-
//# sourceMappingURL=pane.js.map
|
|
80339
80638
|
|
|
80340
80639
|
/***/ },
|
|
80341
80640
|
|
|
@@ -80350,35 +80649,40 @@ Object.defineProperty(exports, "__esModule", ({
|
|
|
80350
80649
|
}));
|
|
80351
80650
|
exports["default"] = void 0;
|
|
80352
80651
|
var _default = exports["default"] = {
|
|
80353
|
-
buildTime: '2026-
|
|
80354
|
-
commit: '
|
|
80652
|
+
buildTime: '2026-03-23T14:31:09Z',
|
|
80653
|
+
commit: 'bced9969943d3ef2701e66051be109ba49afdaf9',
|
|
80355
80654
|
npmInfo: {
|
|
80356
|
-
'solid-panes': '4.2.
|
|
80357
|
-
npm: '10.
|
|
80358
|
-
node: '
|
|
80655
|
+
'solid-panes': '4.2.4',
|
|
80656
|
+
npm: '10.9.4',
|
|
80657
|
+
node: '22.22.1',
|
|
80359
80658
|
acorn: '8.15.0',
|
|
80360
80659
|
ada: '2.9.2',
|
|
80660
|
+
amaro: '1.1.5',
|
|
80361
80661
|
ares: '1.34.6',
|
|
80362
80662
|
brotli: '1.1.0',
|
|
80363
|
-
cjs_module_lexer: '2.
|
|
80364
|
-
cldr: '
|
|
80365
|
-
icu: '
|
|
80663
|
+
cjs_module_lexer: '2.2.0',
|
|
80664
|
+
cldr: '48.0',
|
|
80665
|
+
icu: '78.2',
|
|
80366
80666
|
llhttp: '9.3.0',
|
|
80367
|
-
modules: '
|
|
80368
|
-
napi: '
|
|
80369
|
-
|
|
80370
|
-
|
|
80667
|
+
modules: '127',
|
|
80668
|
+
napi: '10',
|
|
80669
|
+
nbytes: '0.1.1',
|
|
80670
|
+
ncrypto: '0.0.1',
|
|
80671
|
+
nghttp2: '1.64.0',
|
|
80672
|
+
openssl: '3.5.5',
|
|
80673
|
+
simdjson: '4.2.4',
|
|
80371
80674
|
simdutf: '6.4.2',
|
|
80372
|
-
|
|
80675
|
+
sqlite: '3.51.2',
|
|
80676
|
+
tz: '2025c',
|
|
80373
80677
|
undici: '6.23.0',
|
|
80374
|
-
unicode: '
|
|
80375
|
-
uv: '1.
|
|
80678
|
+
unicode: '17.0',
|
|
80679
|
+
uv: '1.51.0',
|
|
80376
80680
|
uvwasi: '0.0.23',
|
|
80377
|
-
v8: '
|
|
80378
|
-
zlib: '1.3.1-
|
|
80681
|
+
v8: '12.4.254.21-node.35',
|
|
80682
|
+
zlib: '1.3.1-e00f703',
|
|
80683
|
+
zstd: '1.5.7'
|
|
80379
80684
|
}
|
|
80380
80685
|
};
|
|
80381
|
-
//# sourceMappingURL=versionInfo.js.map
|
|
80382
80686
|
|
|
80383
80687
|
/***/ },
|
|
80384
80688
|
|
|
@@ -80428,7 +80732,6 @@ var _default = exports["default"] = {
|
|
|
80428
80732
|
return div;
|
|
80429
80733
|
}
|
|
80430
80734
|
}; // ends
|
|
80431
|
-
//# sourceMappingURL=videoPane.js.map
|
|
80432
80735
|
|
|
80433
80736
|
/***/ },
|
|
80434
80737
|
|
|
@@ -84524,7 +84827,7 @@ function attachmentList(dom, subject, div) {
|
|
|
84524
84827
|
var attachmentRight = attachmentOne.appendChild(dom.createElement('td'));
|
|
84525
84828
|
var attachmentTable = attachmentRight.appendChild(dom.createElement('table'));
|
|
84526
84829
|
attachmentTable.appendChild(dom.createElement('tr')) // attachmentTableTop
|
|
84527
|
-
|
|
84830
|
+
;
|
|
84528
84831
|
attachmentOuter.refresh = refresh; // Participate in downstream changes
|
|
84529
84832
|
// ;(attachmentTable as any).refresh = refresh <- outer should be best?
|
|
84530
84833
|
|
|
@@ -85346,6 +85649,8 @@ function basicField(dom, container, already, subject, form, doc, callbackFunctio
|
|
|
85346
85649
|
field.style = inputStyle;
|
|
85347
85650
|
rhs.appendChild(field);
|
|
85348
85651
|
field.setAttribute('type', params.type ? params.type : 'text');
|
|
85652
|
+
var fieldType = (field.getAttribute('type') || '').toLowerCase();
|
|
85653
|
+
var deferWhileFocused = fieldType === 'date' || fieldType === 'datetime-local';
|
|
85349
85654
|
var size = kb.anyJS(form, src_ns.ui('size')) || styleConstants.textInputSize || 20;
|
|
85350
85655
|
field.setAttribute('size', size);
|
|
85351
85656
|
var maxLength = kb.any(form, src_ns.ui('maxLength'));
|
|
@@ -85369,7 +85674,7 @@ function basicField(dom, container, already, subject, form, doc, callbackFunctio
|
|
|
85369
85674
|
}
|
|
85370
85675
|
if (!kb.updater.editable(doc.uri)) {
|
|
85371
85676
|
field.readOnly = true // was: disabled. readOnly is better
|
|
85372
|
-
|
|
85677
|
+
;
|
|
85373
85678
|
field.style = style.textInputStyleUneditable + paramStyle;
|
|
85374
85679
|
if (suppressEmptyUneditable && field.value === '') {
|
|
85375
85680
|
box.style.display = 'none'; // clutter
|
|
@@ -85384,9 +85689,18 @@ function basicField(dom, container, already, subject, form, doc, callbackFunctio
|
|
|
85384
85689
|
}
|
|
85385
85690
|
}, true);
|
|
85386
85691
|
field.addEventListener('change', function (_e) {
|
|
85692
|
+
if (deferWhileFocused && dom.activeElement === field) {
|
|
85693
|
+
if (field.dataset) {
|
|
85694
|
+
field.dataset.deferredChange = 'true';
|
|
85695
|
+
}
|
|
85696
|
+
return;
|
|
85697
|
+
}
|
|
85387
85698
|
// i.e. lose focus with changed data
|
|
85388
85699
|
if (params.pattern && !field.value.match(params.pattern)) return;
|
|
85389
|
-
|
|
85700
|
+
var disabledForSave = !deferWhileFocused;
|
|
85701
|
+
if (disabledForSave) {
|
|
85702
|
+
field.disabled = true; // See if this stops getting two dates from fumbling, e.g., the chrome datepicker.
|
|
85703
|
+
}
|
|
85390
85704
|
field.setAttribute('style', inputStyle + 'color: gray;'); // pending
|
|
85391
85705
|
var ds = kb.statementsMatching(subject, property); // remove any multiple values
|
|
85392
85706
|
var result;
|
|
@@ -85454,7 +85768,9 @@ function basicField(dom, container, already, subject, form, doc, callbackFunctio
|
|
|
85454
85768
|
updateMany(ds, is, function (uri, ok, body) {
|
|
85455
85769
|
// kb.updater.update(ds, is, function (uri, ok, body) {
|
|
85456
85770
|
if (ok) {
|
|
85457
|
-
|
|
85771
|
+
if (disabledForSave) {
|
|
85772
|
+
field.disabled = false;
|
|
85773
|
+
}
|
|
85458
85774
|
field.setAttribute('style', inputStyle);
|
|
85459
85775
|
} else {
|
|
85460
85776
|
box.appendChild(errorMessageBlock(dom, body));
|
|
@@ -85462,6 +85778,15 @@ function basicField(dom, container, already, subject, form, doc, callbackFunctio
|
|
|
85462
85778
|
callbackFunction(ok, body);
|
|
85463
85779
|
});
|
|
85464
85780
|
}, true);
|
|
85781
|
+
field.addEventListener('blur', function (_e) {
|
|
85782
|
+
if (deferWhileFocused && field.dataset && field.dataset.deferredChange === 'true') {
|
|
85783
|
+
delete field.dataset.deferredChange;
|
|
85784
|
+
var event = new Event('change', {
|
|
85785
|
+
bubbles: true
|
|
85786
|
+
});
|
|
85787
|
+
field.dispatchEvent(event);
|
|
85788
|
+
}
|
|
85789
|
+
}, true);
|
|
85465
85790
|
return box;
|
|
85466
85791
|
}
|
|
85467
85792
|
;// ./src/widgets/forms/autocomplete/language.ts
|
|
@@ -88697,9 +89022,33 @@ field[src_ns.ui('Classifier').uri] = function (dom, container, already, subject,
|
|
|
88697
89022
|
if (!ok) return callbackFunction(ok, body);
|
|
88698
89023
|
return callbackFunction(ok, body);
|
|
88699
89024
|
};
|
|
88700
|
-
|
|
88701
|
-
|
|
88702
|
-
|
|
89025
|
+
// Create container for label and select
|
|
89026
|
+
var outerBox = dom.createElement('div');
|
|
89027
|
+
outerBox.setAttribute('class', 'classifierBox');
|
|
89028
|
+
// Render label
|
|
89029
|
+
var labelDiv = dom.createElement('div');
|
|
89030
|
+
labelDiv.setAttribute('class', 'formFieldName classifierBox-label');
|
|
89031
|
+
// Use fieldLabel to render ui:label if present
|
|
89032
|
+
labelDiv.appendChild(fieldLabel(dom, category, form));
|
|
89033
|
+
outerBox.appendChild(labelDiv);
|
|
89034
|
+
// Render select
|
|
89035
|
+
var selectBox = dom.createElement('div');
|
|
89036
|
+
selectBox.setAttribute('class', 'formFieldValue classifierBox-selectBox');
|
|
89037
|
+
var selectElement = makeSelectForNestedCategory(dom, kb, subject, category, dataDoc, checkOptions);
|
|
89038
|
+
// Set readonly if not editable
|
|
89039
|
+
if (selectElement && selectElement.querySelectorAll) {
|
|
89040
|
+
var selects = selectElement.querySelectorAll('select');
|
|
89041
|
+
if (selects.length && !kb.updater.editable(dataDoc.uri)) {
|
|
89042
|
+
selects.forEach(function (select) {
|
|
89043
|
+
select.readOnly = true;
|
|
89044
|
+
select.style = style.textInputStyleUneditable;
|
|
89045
|
+
});
|
|
89046
|
+
}
|
|
89047
|
+
}
|
|
89048
|
+
selectBox.appendChild(selectElement);
|
|
89049
|
+
outerBox.appendChild(selectBox);
|
|
89050
|
+
if (container) container.appendChild(outerBox);
|
|
89051
|
+
return outerBox;
|
|
88703
89052
|
};
|
|
88704
89053
|
|
|
88705
89054
|
/** Choice field
|
|
@@ -91887,6 +92236,8 @@ var AccessGroups = /*#__PURE__*/function () {
|
|
|
91887
92236
|
thing,
|
|
91888
92237
|
_this$_store,
|
|
91889
92238
|
message,
|
|
92239
|
+
detectedTypes,
|
|
92240
|
+
typeDetails,
|
|
91890
92241
|
error,
|
|
91891
92242
|
_args4 = arguments,
|
|
91892
92243
|
_t2;
|
|
@@ -91920,7 +92271,9 @@ var AccessGroups = /*#__PURE__*/function () {
|
|
|
91920
92271
|
_context4.next = 6;
|
|
91921
92272
|
break;
|
|
91922
92273
|
}
|
|
91923
|
-
|
|
92274
|
+
detectedTypes = Object.keys(this.store.findTypeURIs(thing));
|
|
92275
|
+
typeDetails = detectedTypes.length > 0 ? "Detected RDF types: ".concat(detectedTypes.join(', ')) : 'No RDF type was detected for this URI.';
|
|
92276
|
+
error = "Error: Failed to add access target: ".concat(uri, " is not a recognized ACL target type.") + " Expected one of: vcard:WebID, vcard:Group, foaf:Person, foaf:Agent, solid:AppProvider, solid:AppProviderClass, or recognized ACL classes." + ' Hint: try dropping a WebID profile URI, a vcard:Group URI, or a web app origin.' + typeDetails;
|
|
91924
92277
|
src_debug/* error */.z3(error);
|
|
91925
92278
|
return _context4.abrupt("return", Promise.reject(new Error(error)));
|
|
91926
92279
|
case 6:
|
|
@@ -93259,7 +93612,7 @@ function cameraCaptureControl(dom, store, getImageDoc, doneCallback) {
|
|
|
93259
93612
|
// if (!confirm('Save picture to ' + destination + ' ?')) return
|
|
93260
93613
|
src_debug/* log */.Rm('Putting ' + blob.size + ' bytes of ' + contentType + ' to ' + destination)
|
|
93261
93614
|
// @@ TODO Remove casting
|
|
93262
|
-
|
|
93615
|
+
;
|
|
93263
93616
|
store.fetcher.webOperation('PUT', destination.uri, {
|
|
93264
93617
|
data: blob,
|
|
93265
93618
|
contentType: contentType
|
|
@@ -99357,8 +99710,8 @@ function notepad(dom, padDoc, subject, me, options) {
|
|
|
99357
99710
|
}
|
|
99358
99711
|
}
|
|
99359
99712
|
/* @@ TODO want to look into this, it seems upstream should be a boolean and default to false ?
|
|
99360
|
-
|
|
99361
|
-
|
|
99713
|
+
*
|
|
99714
|
+
*/
|
|
99362
99715
|
var complain = function complain(message) {
|
|
99363
99716
|
var upstream = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
99364
99717
|
(0,src_debug/* log */.Rm)(message);
|
|
@@ -99370,6 +99723,7 @@ function notepad(dom, padDoc, subject, me, options) {
|
|
|
99370
99723
|
// @@ TODO need to refactor so that we don't have to type cast
|
|
99371
99724
|
var clearStatus = function clearStatus(_upsteam) {
|
|
99372
99725
|
if (options.statusArea) {
|
|
99726
|
+
;
|
|
99373
99727
|
options.statusArea.innerHTML = '';
|
|
99374
99728
|
}
|
|
99375
99729
|
};
|
|
@@ -99401,7 +99755,7 @@ function notepad(dom, padDoc, subject, me, options) {
|
|
|
99401
99755
|
var next = kb.any(chunk, PAD('next'));
|
|
99402
99756
|
if (prev.sameTerm(subject) && next.sameTerm(subject)) {
|
|
99403
99757
|
// Last one
|
|
99404
|
-
(0,src_debug/* log */.Rm)(
|
|
99758
|
+
(0,src_debug/* log */.Rm)("You can't delete the only line.");
|
|
99405
99759
|
return;
|
|
99406
99760
|
}
|
|
99407
99761
|
var del = kb.statementsMatching(chunk, undefined, undefined, padDoc).concat(kb.statementsMatching(undefined, undefined, chunk, padDoc));
|
|
@@ -99443,10 +99797,10 @@ function notepad(dom, padDoc, subject, me, options) {
|
|
|
99443
99797
|
}, 1000);
|
|
99444
99798
|
} else {
|
|
99445
99799
|
(0,src_debug/* log */.Rm)(' removePart FAILED ' + chunk + ': ' + errorMessage);
|
|
99446
|
-
(0,src_debug/* log */.Rm)(
|
|
99800
|
+
(0,src_debug/* log */.Rm)(" removePart was deleting :'" + del);
|
|
99447
99801
|
setPartStyle(part, 'color: black; background-color: #fdd;'); // failed
|
|
99448
99802
|
var res = response ? response.status : ' [no response field] ';
|
|
99449
|
-
complain('Error ' + res + ' saving changes: ' + errorMessage
|
|
99803
|
+
complain('Error ' + res + ' saving changes: ' + String(errorMessage)); // upstream,
|
|
99450
99804
|
// updater.requestDownstreamAction(padDoc, reloadAndSync);
|
|
99451
99805
|
}
|
|
99452
99806
|
});
|
|
@@ -99463,7 +99817,7 @@ function notepad(dom, padDoc, subject, me, options) {
|
|
|
99463
99817
|
}
|
|
99464
99818
|
updater.update(del, ins, function (uri, ok, errorBody) {
|
|
99465
99819
|
if (!ok) {
|
|
99466
|
-
(0,src_debug/* log */.Rm)(
|
|
99820
|
+
(0,src_debug/* log */.Rm)("Indent change FAILED '" + newIndent + "' for " + padDoc + ': ' + errorBody);
|
|
99467
99821
|
setPartStyle(part, 'color: black; background-color: #fdd;'); // failed
|
|
99468
99822
|
updater.requestDownstreamAction(padDoc, reloadAndSync);
|
|
99469
99823
|
} else {
|
|
@@ -99472,6 +99826,7 @@ function notepad(dom, padDoc, subject, me, options) {
|
|
|
99472
99826
|
});
|
|
99473
99827
|
};
|
|
99474
99828
|
var addListeners = function addListeners(part, chunk) {
|
|
99829
|
+
var inputDebounceTimer = null;
|
|
99475
99830
|
part.addEventListener('keydown', function (event) {
|
|
99476
99831
|
if (!updater) {
|
|
99477
99832
|
throw new Error('no updater');
|
|
@@ -99480,8 +99835,8 @@ function notepad(dom, padDoc, subject, me, options) {
|
|
|
99480
99835
|
// up 38; down 40; left 37; right 39 tab 9; shift 16; escape 27
|
|
99481
99836
|
switch (event.keyCode) {
|
|
99482
99837
|
case 13:
|
|
99483
|
-
// Return
|
|
99484
99838
|
{
|
|
99839
|
+
// Return
|
|
99485
99840
|
var before = event.shiftKey;
|
|
99486
99841
|
(0,src_debug/* log */.Rm)('enter'); // Shift-return inserts before -- only way to add to top of pad.
|
|
99487
99842
|
if (before) {
|
|
@@ -99528,8 +99883,8 @@ function notepad(dom, padDoc, subject, me, options) {
|
|
|
99528
99883
|
}
|
|
99529
99884
|
break;
|
|
99530
99885
|
case 9:
|
|
99531
|
-
// Tab
|
|
99532
99886
|
{
|
|
99887
|
+
// Tab
|
|
99533
99888
|
var delta = event.shiftKey ? -1 : 1;
|
|
99534
99889
|
changeIndent(part, chunk, delta);
|
|
99535
99890
|
event.preventDefault(); // default is to highlight next field
|
|
@@ -99572,7 +99927,8 @@ function notepad(dom, padDoc, subject, me, options) {
|
|
|
99572
99927
|
// DEBUGGING ONLY
|
|
99573
99928
|
if (part.lastSent) {
|
|
99574
99929
|
if (old !== part.lastSent) {
|
|
99575
|
-
|
|
99930
|
+
// Non-fatal: log a warning instead of throwing, to avoid crashing the pad UI.
|
|
99931
|
+
console.warn("Out of order, last sent expected '" + old + "' but found '" + part.lastSent + "'");
|
|
99576
99932
|
}
|
|
99577
99933
|
}
|
|
99578
99934
|
part.lastSent = newOne;
|
|
@@ -99592,7 +99948,7 @@ function notepad(dom, padDoc, subject, me, options) {
|
|
|
99592
99948
|
updater.update(del, ins, function (uri, ok, errorBody, xhr) {
|
|
99593
99949
|
if (!ok) {
|
|
99594
99950
|
// alert("clash " + errorBody);
|
|
99595
|
-
(0,src_debug/* log */.Rm)(' patch FAILED ' + xhr.status +
|
|
99951
|
+
(0,src_debug/* log */.Rm)(' patch FAILED ' + xhr.status + " for '" + old + "' -> '" + newOne + "': " + errorBody);
|
|
99596
99952
|
if (xhr.status === 409) {
|
|
99597
99953
|
// Conflict - @@ we assume someone else
|
|
99598
99954
|
setPartStyle(part, 'color: black; background-color: #fdd;');
|
|
@@ -99603,15 +99959,28 @@ function notepad(dom, padDoc, subject, me, options) {
|
|
|
99603
99959
|
}, 1000);
|
|
99604
99960
|
} else {
|
|
99605
99961
|
setPartStyle(part, 'color: black; background-color: #fdd;'); // failed pink
|
|
99606
|
-
|
|
99607
|
-
|
|
99608
|
-
|
|
99609
|
-
|
|
99962
|
+
var status = xhr === null || xhr === void 0 ? void 0 : xhr.status;
|
|
99963
|
+
if (!status || status === 502 || status === 503) {
|
|
99964
|
+
// Transient server error – retry after a short delay
|
|
99965
|
+
part.lastSent = undefined;
|
|
99966
|
+
part.state = 0;
|
|
99967
|
+
setTimeout(function () {
|
|
99968
|
+
if (part.state === 0 || part.state === undefined) {
|
|
99969
|
+
part.state = 1;
|
|
99970
|
+
_updateStore(part);
|
|
99971
|
+
}
|
|
99972
|
+
}, 2000);
|
|
99973
|
+
} else {
|
|
99974
|
+
part.state = 0;
|
|
99975
|
+
complain(' Error ' + status + ' sending data: ' + errorBody, true);
|
|
99976
|
+
beep(1.0, 128); // Other
|
|
99977
|
+
// @@@ Do something more serious with other errors eg auth, etc
|
|
99978
|
+
}
|
|
99610
99979
|
}
|
|
99611
99980
|
} else {
|
|
99612
99981
|
clearStatus(true); // upstream
|
|
99613
99982
|
setPartStyle(part); // synced
|
|
99614
|
-
(0,src_debug/* log */.Rm)(
|
|
99983
|
+
(0,src_debug/* log */.Rm)(" Patch ok '" + old + "' -> '" + newOne + "' ");
|
|
99615
99984
|
if (part.state === 4) {
|
|
99616
99985
|
// delete me
|
|
99617
99986
|
part.state = 3;
|
|
@@ -99631,7 +100000,7 @@ function notepad(dom, padDoc, subject, me, options) {
|
|
|
99631
100000
|
part.addEventListener('input', function inputChangeListener(_event) {
|
|
99632
100001
|
// debug.log("input changed "+part.value);
|
|
99633
100002
|
setPartStyle(part, undefined, true); // grey out - not synced
|
|
99634
|
-
(0,src_debug/* log */.Rm)('Input event state ' + part.state +
|
|
100003
|
+
(0,src_debug/* log */.Rm)('Input event state ' + part.state + " value '" + part.value + "'");
|
|
99635
100004
|
switch (part.state) {
|
|
99636
100005
|
case 3:
|
|
99637
100006
|
// being deleted
|
|
@@ -99647,8 +100016,15 @@ function notepad(dom, padDoc, subject, me, options) {
|
|
|
99647
100016
|
return;
|
|
99648
100017
|
case 0:
|
|
99649
100018
|
case undefined:
|
|
99650
|
-
|
|
99651
|
-
|
|
100019
|
+
// Debounce: wait for a pause in typing before sending PATCH
|
|
100020
|
+
if (inputDebounceTimer !== null) clearTimeout(inputDebounceTimer);
|
|
100021
|
+
inputDebounceTimer = setTimeout(function () {
|
|
100022
|
+
inputDebounceTimer = null;
|
|
100023
|
+
if (part.state === 0 || part.state === undefined) {
|
|
100024
|
+
part.state = 1; // being updated
|
|
100025
|
+
_updateStore(part);
|
|
100026
|
+
}
|
|
100027
|
+
}, 400);
|
|
99652
100028
|
}
|
|
99653
100029
|
}); // listener
|
|
99654
100030
|
}; // addlisteners
|
|
@@ -99678,13 +100054,13 @@ function notepad(dom, padDoc, subject, me, options) {
|
|
|
99678
100054
|
addListeners(part, chunk);
|
|
99679
100055
|
} else {
|
|
99680
100056
|
setPartStyle(part, 'color: #222; background-color: #fff');
|
|
99681
|
-
(0,src_debug/* log */.Rm)(
|
|
100057
|
+
(0,src_debug/* log */.Rm)("Note can't add listeners - not logged in");
|
|
99682
100058
|
}
|
|
99683
100059
|
return part;
|
|
99684
100060
|
};
|
|
99685
100061
|
|
|
99686
100062
|
/* @@ TODO we need to look at indent, it can be a Number or an Object this doesn't seem correct.
|
|
99687
|
-
|
|
100063
|
+
*/
|
|
99688
100064
|
var _newChunk = function newChunk(ele, before) {
|
|
99689
100065
|
// element of chunk being split
|
|
99690
100066
|
var kb = pad_store;
|
|
@@ -99809,6 +100185,7 @@ function notepad(dom, padDoc, subject, me, options) {
|
|
|
99809
100185
|
var msg = 'Pad: Inconsistent data - NEXT pointers: ' + kb.each(subject, PAD('next')).length;
|
|
99810
100186
|
(0,src_debug/* log */.Rm)(msg);
|
|
99811
100187
|
if (options.statusArea) {
|
|
100188
|
+
;
|
|
99812
100189
|
options.statusArea.textContent += msg;
|
|
99813
100190
|
}
|
|
99814
100191
|
return;
|
|
@@ -104553,7 +104930,7 @@ function tabWidget(options) {
|
|
|
104553
104930
|
_getColors2 = _slicedToArray(_getColors, 2),
|
|
104554
104931
|
selectedColor = _getColors2[0],
|
|
104555
104932
|
color = _getColors2[1];
|
|
104556
|
-
var bodyMainStyle = "
|
|
104933
|
+
var bodyMainStyle = "display: grid; width: auto; height: 100%; border: 0.1em; border-style: solid; border-color: ".concat(selectedColor, "; padding: 1em;");
|
|
104557
104934
|
var rootElement = dom.createElement('div'); // 20200117a
|
|
104558
104935
|
|
|
104559
104936
|
rootElement.setAttribute('style', style.tabsRootElement);
|
|
@@ -106505,25 +106882,25 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
106505
106882
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
106506
106883
|
/* harmony export */ Hooks: () => (/* binding */ P),
|
|
106507
106884
|
/* harmony export */ Lexer: () => (/* binding */ x),
|
|
106508
|
-
/* harmony export */ Marked: () => (/* binding */
|
|
106885
|
+
/* harmony export */ Marked: () => (/* binding */ D),
|
|
106509
106886
|
/* harmony export */ Parser: () => (/* binding */ b),
|
|
106510
106887
|
/* harmony export */ Renderer: () => (/* binding */ y),
|
|
106511
106888
|
/* harmony export */ TextRenderer: () => (/* binding */ $),
|
|
106512
106889
|
/* harmony export */ Tokenizer: () => (/* binding */ w),
|
|
106513
106890
|
/* harmony export */ defaults: () => (/* binding */ T),
|
|
106514
106891
|
/* harmony export */ getDefaults: () => (/* binding */ M),
|
|
106515
|
-
/* harmony export */ lexer: () => (/* binding */
|
|
106892
|
+
/* harmony export */ lexer: () => (/* binding */ Jt),
|
|
106516
106893
|
/* harmony export */ marked: () => (/* binding */ g),
|
|
106517
|
-
/* harmony export */ options: () => (/* binding */
|
|
106518
|
-
/* harmony export */ parse: () => (/* binding */
|
|
106519
|
-
/* harmony export */ parseInline: () => (/* binding */
|
|
106520
|
-
/* harmony export */ parser: () => (/* binding */
|
|
106521
|
-
/* harmony export */ setOptions: () => (/* binding */
|
|
106522
|
-
/* harmony export */ use: () => (/* binding */
|
|
106523
|
-
/* harmony export */ walkTokens: () => (/* binding */
|
|
106894
|
+
/* harmony export */ options: () => (/* binding */ Qt),
|
|
106895
|
+
/* harmony export */ parse: () => (/* binding */ Wt),
|
|
106896
|
+
/* harmony export */ parseInline: () => (/* binding */ Kt),
|
|
106897
|
+
/* harmony export */ parser: () => (/* binding */ Xt),
|
|
106898
|
+
/* harmony export */ setOptions: () => (/* binding */ jt),
|
|
106899
|
+
/* harmony export */ use: () => (/* binding */ Ft),
|
|
106900
|
+
/* harmony export */ walkTokens: () => (/* binding */ Ut)
|
|
106524
106901
|
/* harmony export */ });
|
|
106525
106902
|
/**
|
|
106526
|
-
* marked v17.0.
|
|
106903
|
+
* marked v17.0.5 - a markdown parser
|
|
106527
106904
|
* Copyright (c) 2018-2026, MarkedJS. (MIT License)
|
|
106528
106905
|
* Copyright (c) 2011-2018, Christopher Jeffrey. (MIT License)
|
|
106529
106906
|
* https://github.com/markedjs/marked
|
|
@@ -106534,12 +106911,12 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
106534
106911
|
* The code in this file is generated from files in ./src/
|
|
106535
106912
|
*/
|
|
106536
106913
|
|
|
106537
|
-
function M(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var T=M();function
|
|
106538
|
-
]`).replace("lheading",
|
|
106914
|
+
function M(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var T=M();function G(u){T=u}var _={exec:()=>null};function k(u,e=""){let t=typeof u=="string"?u:u.source,n={replace:(r,i)=>{let s=typeof i=="string"?i:i.source;return s=s.replace(m.caret,"$1"),t=t.replace(r,s),n},getRegex:()=>new RegExp(t,e)};return n}var be=(()=>{try{return!!new RegExp("(?<=1)(?<!1)")}catch{return!1}})(),m={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:u=>new RegExp(`^( {0,3}${u})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:u=>new RegExp(`^ {0,${Math.min(3,u-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),hrRegex:u=>new RegExp(`^ {0,${Math.min(3,u-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:u=>new RegExp(`^ {0,${Math.min(3,u-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:u=>new RegExp(`^ {0,${Math.min(3,u-1)}}#`),htmlBeginRegex:u=>new RegExp(`^ {0,${Math.min(3,u-1)}}<(?:[a-z].*>|!--)`,"i"),blockquoteBeginRegex:u=>new RegExp(`^ {0,${Math.min(3,u-1)}}>`)},Re=/^(?:[ \t]*(?:\n|$))+/,Te=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,Oe=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,C=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,we=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,Q=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,se=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,ie=k(se).replace(/bull/g,Q).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),ye=k(se).replace(/bull/g,Q).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),j=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,Pe=/^[^\n]+/,F=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,Se=k(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",F).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),$e=k(/^(bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,Q).getRegex(),v="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",U=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,_e=k("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",U).replace("tag",v).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),oe=k(j).replace("hr",C).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",v).getRegex(),Le=k(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",oe).getRegex(),K={blockquote:Le,code:Te,def:Se,fences:Oe,heading:we,hr:C,html:_e,lheading:ie,list:$e,newline:Re,paragraph:oe,table:_,text:Pe},ne=k("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",C).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",v).getRegex(),Me={...K,lheading:ye,table:ne,paragraph:k(j).replace("hr",C).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",ne).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",v).getRegex()},ze={...K,html:k(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",U).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:_,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:k(j).replace("hr",C).replace("heading",` *#{1,6} *[^
|
|
106915
|
+
]`).replace("lheading",ie).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},Ee=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,Ie=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,ae=/^( {2,}|\\)\n(?!\s*$)/,Ae=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,z=/[\p{P}\p{S}]/u,H=/[\s\p{P}\p{S}]/u,W=/[^\s\p{P}\p{S}]/u,Ce=k(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,H).getRegex(),le=/(?!~)[\p{P}\p{S}]/u,Be=/(?!~)[\s\p{P}\p{S}]/u,De=/(?:[^\s\p{P}\p{S}]|~)/u,qe=k(/link|precode-code|html/,"g").replace("link",/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",be?"(?<!`)()":"(^^|[^`])").replace("code",/(?<b>`+)[^`]+\k<b>(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),ue=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,ve=k(ue,"u").replace(/punct/g,z).getRegex(),He=k(ue,"u").replace(/punct/g,le).getRegex(),pe="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",Ze=k(pe,"gu").replace(/notPunctSpace/g,W).replace(/punctSpace/g,H).replace(/punct/g,z).getRegex(),Ge=k(pe,"gu").replace(/notPunctSpace/g,De).replace(/punctSpace/g,Be).replace(/punct/g,le).getRegex(),Ne=k("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,W).replace(/punctSpace/g,H).replace(/punct/g,z).getRegex(),Qe=k(/^~~?(?:((?!~)punct)|[^\s~])/,"u").replace(/punct/g,z).getRegex(),je="^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)",Fe=k(je,"gu").replace(/notPunctSpace/g,W).replace(/punctSpace/g,H).replace(/punct/g,z).getRegex(),Ue=k(/\\(punct)/,"gu").replace(/punct/g,z).getRegex(),Ke=k(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),We=k(U).replace("(?:-->|$)","-->").getRegex(),Xe=k("^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment",We).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),q=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/,Je=k(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace("label",q).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),ce=k(/^!?\[(label)\]\[(ref)\]/).replace("label",q).replace("ref",F).getRegex(),he=k(/^!?\[(ref)\](?:\[\])?/).replace("ref",F).getRegex(),Ve=k("reflink|nolink(?!\\()","g").replace("reflink",ce).replace("nolink",he).getRegex(),re=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,X={_backpedal:_,anyPunctuation:Ue,autolink:Ke,blockSkip:qe,br:ae,code:Ie,del:_,delLDelim:_,delRDelim:_,emStrongLDelim:ve,emStrongRDelimAst:Ze,emStrongRDelimUnd:Ne,escape:Ee,link:Je,nolink:he,punctuation:Ce,reflink:ce,reflinkSearch:Ve,tag:Xe,text:Ae,url:_},Ye={...X,link:k(/^!?\[(label)\]\((.*?)\)/).replace("label",q).getRegex(),reflink:k(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",q).getRegex()},N={...X,emStrongRDelimAst:Ge,emStrongLDelim:He,delLDelim:Qe,delRDelim:Fe,url:k(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol",re).replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:k(/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/).replace("protocol",re).getRegex()},et={...N,br:k(ae).replace("{2,}","*").getRegex(),text:k(N.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()},B={normal:K,gfm:Me,pedantic:ze},E={normal:X,gfm:N,breaks:et,pedantic:Ye};var tt={"&":"&","<":"<",">":">",'"':""","'":"'"},ke=u=>tt[u];function O(u,e){if(e){if(m.escapeTest.test(u))return u.replace(m.escapeReplace,ke)}else if(m.escapeTestNoEncode.test(u))return u.replace(m.escapeReplaceNoEncode,ke);return u}function J(u){try{u=encodeURI(u).replace(m.percentDecode,"%")}catch{return null}return u}function V(u,e){let t=u.replace(m.findPipe,(i,s,a)=>{let o=!1,l=s;for(;--l>=0&&a[l]==="\\";)o=!o;return o?"|":" |"}),n=t.split(m.splitPipe),r=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),e)if(n.length>e)n.splice(e);else for(;n.length<e;)n.push("");for(;r<n.length;r++)n[r]=n[r].trim().replace(m.slashPipe,"|");return n}function I(u,e,t){let n=u.length;if(n===0)return"";let r=0;for(;r<n;){let i=u.charAt(n-r-1);if(i===e&&!t)r++;else if(i!==e&&t)r++;else break}return u.slice(0,n-r)}function de(u,e){if(u.indexOf(e[1])===-1)return-1;let t=0;for(let n=0;n<u.length;n++)if(u[n]==="\\")n++;else if(u[n]===e[0])t++;else if(u[n]===e[1]&&(t--,t<0))return n;return t>0?-2:-1}function ge(u,e=0){let t=e,n="";for(let r of u)if(r===" "){let i=4-t%4;n+=" ".repeat(i),t+=i}else n+=r,t++;return n}function fe(u,e,t,n,r){let i=e.href,s=e.title||null,a=u[1].replace(r.other.outputLinkReplace,"$1");n.state.inLink=!0;let o={type:u[0].charAt(0)==="!"?"image":"link",raw:t,href:i,title:s,text:a,tokens:n.inlineTokens(a)};return n.state.inLink=!1,o}function nt(u,e,t){let n=u.match(t.other.indentCodeCompensation);if(n===null)return e;let r=n[1];return e.split(`
|
|
106539
106916
|
`).map(i=>{let s=i.match(t.other.beginningSpace);if(s===null)return i;let[a]=s;return a.length>=r.length?i.slice(r.length):i}).join(`
|
|
106540
|
-
`)}var w=class{options;rules;lexer;constructor(e){this.options=e||T}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:"space",raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let n=t[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:t[0],codeBlockStyle:"indented",text:this.options.pedantic?n:
|
|
106541
|
-
`)}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let n=t[0],r=
|
|
106542
|
-
`)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let n=
|
|
106917
|
+
`)}var w=class{options;rules;lexer;constructor(e){this.options=e||T}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:"space",raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let n=t[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:t[0],codeBlockStyle:"indented",text:this.options.pedantic?n:I(n,`
|
|
106918
|
+
`)}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let n=t[0],r=nt(n,t[3]||"",this.rules);return{type:"code",raw:n,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):t[2],text:r}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let n=t[2].trim();if(this.rules.other.endingHash.test(n)){let r=I(n,"#");(this.options.pedantic||!r||this.rules.other.endingSpaceChar.test(r))&&(n=r.trim())}return{type:"heading",raw:t[0],depth:t[1].length,text:n,tokens:this.lexer.inline(n)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:I(t[0],`
|
|
106919
|
+
`)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let n=I(t[0],`
|
|
106543
106920
|
`).split(`
|
|
106544
106921
|
`),r="",i="",s=[];for(;n.length>0;){let a=!1,o=[],l;for(l=0;l<n.length;l++)if(this.rules.other.blockquoteStart.test(n[l]))o.push(n[l]),a=!0;else if(!a)o.push(n[l]);else break;n=n.slice(l);let p=o.join(`
|
|
106545
106922
|
`),c=p.replace(this.rules.other.blockquoteSetextReplace,`
|
|
@@ -106550,17 +106927,17 @@ ${c}`:c;let d=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTo
|
|
|
106550
106927
|
`),S=this.blockquote(f);s[s.length-1]=S,r=r.substring(0,r.length-R.raw.length)+S.raw,i=i.substring(0,i.length-R.text.length)+S.text;break}else if(h?.type==="list"){let R=h,f=R.raw+`
|
|
106551
106928
|
`+n.join(`
|
|
106552
106929
|
`),S=this.list(f);s[s.length-1]=S,r=r.substring(0,r.length-h.raw.length)+S.raw,i=i.substring(0,i.length-R.raw.length)+S.raw,n=f.substring(s.at(-1).raw.length).split(`
|
|
106553
|
-
`);continue}}return{type:"blockquote",raw:r,tokens:s,text:i}}}list(e){let t=this.rules.block.list.exec(e);if(t){let n=t[1].trim(),r=n.length>1,i={type:"list",raw:"",ordered:r,start:r?+n.slice(0,-1):"",loose:!1,items:[]};n=r?`\\d{1,9}\\${n.slice(-1)}`:`\\${n}`,this.options.pedantic&&(n=r?n:"[*+-]");let s=this.rules.other.listItemRegex(n),a=!1;for(;e;){let l=!1,p="",c="";if(!(t=s.exec(e))||this.rules.block.hr.test(e))break;p=t[0],e=e.substring(p.length);let d=
|
|
106930
|
+
`);continue}}return{type:"blockquote",raw:r,tokens:s,text:i}}}list(e){let t=this.rules.block.list.exec(e);if(t){let n=t[1].trim(),r=n.length>1,i={type:"list",raw:"",ordered:r,start:r?+n.slice(0,-1):"",loose:!1,items:[]};n=r?`\\d{1,9}\\${n.slice(-1)}`:`\\${n}`,this.options.pedantic&&(n=r?n:"[*+-]");let s=this.rules.other.listItemRegex(n),a=!1;for(;e;){let l=!1,p="",c="";if(!(t=s.exec(e))||this.rules.block.hr.test(e))break;p=t[0],e=e.substring(p.length);let d=ge(t[2].split(`
|
|
106554
106931
|
`,1)[0],t[1].length),h=e.split(`
|
|
106555
106932
|
`,1)[0],R=!d.trim(),f=0;if(this.options.pedantic?(f=2,c=d.trimStart()):R?f=t[1].length+1:(f=d.search(this.rules.other.nonSpaceChar),f=f>4?1:f,c=d.slice(f),f+=t[1].length),R&&this.rules.other.blankLine.test(h)&&(p+=h+`
|
|
106556
|
-
`,e=e.substring(h.length+1),l=!0),!l){let S=this.rules.other.nextBulletRegex(f),
|
|
106557
|
-
`,1)[0],A;if(h=
|
|
106558
|
-
`+A.slice(f);else{if(R||d.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||
|
|
106559
|
-
`+h}R=!h.trim(),p+=
|
|
106560
|
-
`,e=e.substring(
|
|
106561
|
-
`):[],s={type:"table",raw:t[0],header:[],align:[],rows:[]};if(n.length===r.length){for(let a of r)this.rules.other.tableAlignRight.test(a)?s.align.push("right"):this.rules.other.tableAlignCenter.test(a)?s.align.push("center"):this.rules.other.tableAlignLeft.test(a)?s.align.push("left"):s.align.push(null);for(let a=0;a<n.length;a++)s.header.push({text:n[a],tokens:this.lexer.inline(n[a]),header:!0,align:s.align[a]});for(let a of i)s.rows.push(
|
|
106562
|
-
`?t[1].slice(0,-1):t[1];return{type:"paragraph",raw:t[0],text:n,tokens:this.lexer.inline(n)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:"text",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:"escape",raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let n=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(n)){if(!this.rules.other.endAngleBracket.test(n))return;let s=
|
|
106563
|
-
`),this.blockTokens(e,this.tokens);for(let t=0;t<this.inlineQueue.length;t++){let n=this.inlineQueue[t];this.inlineTokens(n.src,n.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(e,t=[],n=!1){for(this.options.pedantic&&(e=e.replace(m.tabCharGlobal," ").replace(m.spaceLine,""));e;){let r;if(this.options.extensions?.block?.some(s=>(r=s.call({lexer:this},e,t))?(e=e.substring(r.raw.length),t.push(r),!0):!1))continue;if(r=this.tokenizer.space(e)){e=e.substring(r.raw.length);let s=t.at(-1);r.raw.length===1&&s!==void 0?s.raw+=`
|
|
106933
|
+
`,e=e.substring(h.length+1),l=!0),!l){let S=this.rules.other.nextBulletRegex(f),Y=this.rules.other.hrRegex(f),ee=this.rules.other.fencesBeginRegex(f),te=this.rules.other.headingBeginRegex(f),me=this.rules.other.htmlBeginRegex(f),xe=this.rules.other.blockquoteBeginRegex(f);for(;e;){let Z=e.split(`
|
|
106934
|
+
`,1)[0],A;if(h=Z,this.options.pedantic?(h=h.replace(this.rules.other.listReplaceNesting," "),A=h):A=h.replace(this.rules.other.tabCharGlobal," "),ee.test(h)||te.test(h)||me.test(h)||xe.test(h)||S.test(h)||Y.test(h))break;if(A.search(this.rules.other.nonSpaceChar)>=f||!h.trim())c+=`
|
|
106935
|
+
`+A.slice(f);else{if(R||d.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||ee.test(d)||te.test(d)||Y.test(d))break;c+=`
|
|
106936
|
+
`+h}R=!h.trim(),p+=Z+`
|
|
106937
|
+
`,e=e.substring(Z.length+1),d=A.slice(f)}}i.loose||(a?i.loose=!0:this.rules.other.doubleBlankLine.test(p)&&(a=!0)),i.items.push({type:"list_item",raw:p,task:!!this.options.gfm&&this.rules.other.listIsTask.test(c),loose:!1,text:c,tokens:[]}),i.raw+=p}let o=i.items.at(-1);if(o)o.raw=o.raw.trimEnd(),o.text=o.text.trimEnd();else return;i.raw=i.raw.trimEnd();for(let l of i.items){if(this.lexer.state.top=!1,l.tokens=this.lexer.blockTokens(l.text,[]),l.task){if(l.text=l.text.replace(this.rules.other.listReplaceTask,""),l.tokens[0]?.type==="text"||l.tokens[0]?.type==="paragraph"){l.tokens[0].raw=l.tokens[0].raw.replace(this.rules.other.listReplaceTask,""),l.tokens[0].text=l.tokens[0].text.replace(this.rules.other.listReplaceTask,"");for(let c=this.lexer.inlineQueue.length-1;c>=0;c--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[c].src)){this.lexer.inlineQueue[c].src=this.lexer.inlineQueue[c].src.replace(this.rules.other.listReplaceTask,"");break}}let p=this.rules.other.listTaskCheckbox.exec(l.raw);if(p){let c={type:"checkbox",raw:p[0]+" ",checked:p[0]!=="[ ]"};l.checked=c.checked,i.loose?l.tokens[0]&&["paragraph","text"].includes(l.tokens[0].type)&&"tokens"in l.tokens[0]&&l.tokens[0].tokens?(l.tokens[0].raw=c.raw+l.tokens[0].raw,l.tokens[0].text=c.raw+l.tokens[0].text,l.tokens[0].tokens.unshift(c)):l.tokens.unshift({type:"paragraph",raw:c.raw,text:c.raw,tokens:[c]}):l.tokens.unshift(c)}}if(!i.loose){let p=l.tokens.filter(d=>d.type==="space"),c=p.length>0&&p.some(d=>this.rules.other.anyLine.test(d.raw));i.loose=c}}if(i.loose)for(let l of i.items){l.loose=!0;for(let p of l.tokens)p.type==="text"&&(p.type="paragraph")}return i}}html(e){let t=this.rules.block.html.exec(e);if(t)return{type:"html",block:!0,raw:t[0],pre:t[1]==="pre"||t[1]==="script"||t[1]==="style",text:t[0]}}def(e){let t=this.rules.block.def.exec(e);if(t){let n=t[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal," "),r=t[2]?t[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",i=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):t[3];return{type:"def",tag:n,raw:t[0],href:r,title:i}}}table(e){let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=V(t[1]),r=t[2].replace(this.rules.other.tableAlignChars,"").split("|"),i=t[3]?.trim()?t[3].replace(this.rules.other.tableRowBlankLine,"").split(`
|
|
106938
|
+
`):[],s={type:"table",raw:t[0],header:[],align:[],rows:[]};if(n.length===r.length){for(let a of r)this.rules.other.tableAlignRight.test(a)?s.align.push("right"):this.rules.other.tableAlignCenter.test(a)?s.align.push("center"):this.rules.other.tableAlignLeft.test(a)?s.align.push("left"):s.align.push(null);for(let a=0;a<n.length;a++)s.header.push({text:n[a],tokens:this.lexer.inline(n[a]),header:!0,align:s.align[a]});for(let a of i)s.rows.push(V(a,s.header.length).map((o,l)=>({text:o,tokens:this.lexer.inline(o),header:!1,align:s.align[l]})));return s}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t){let n=t[1].trim();return{type:"heading",raw:t[0],depth:t[2].charAt(0)==="="?1:2,text:n,tokens:this.lexer.inline(n)}}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let n=t[1].charAt(t[1].length-1)===`
|
|
106939
|
+
`?t[1].slice(0,-1):t[1];return{type:"paragraph",raw:t[0],text:n,tokens:this.lexer.inline(n)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:"text",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:"escape",raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let n=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(n)){if(!this.rules.other.endAngleBracket.test(n))return;let s=I(n.slice(0,-1),"\\");if((n.length-s.length)%2===0)return}else{let s=de(t[2],"()");if(s===-2)return;if(s>-1){let o=(t[0].indexOf("!")===0?5:4)+t[1].length+s;t[2]=t[2].substring(0,s),t[0]=t[0].substring(0,o).trim(),t[3]=""}}let r=t[2],i="";if(this.options.pedantic){let s=this.rules.other.pedanticHrefTitle.exec(r);s&&(r=s[1],i=s[3])}else i=t[3]?t[3].slice(1,-1):"";return r=r.trim(),this.rules.other.startAngleBracket.test(r)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(n)?r=r.slice(1):r=r.slice(1,-1)),fe(t,{href:r&&r.replace(this.rules.inline.anyPunctuation,"$1"),title:i&&i.replace(this.rules.inline.anyPunctuation,"$1")},t[0],this.lexer,this.rules)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let r=(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal," "),i=t[r.toLowerCase()];if(!i){let s=n[0].charAt(0);return{type:"text",raw:s,text:s}}return fe(n,i,n[0],this.lexer,this.rules)}}emStrong(e,t,n=""){let r=this.rules.inline.emStrongLDelim.exec(e);if(!r||!r[1]&&!r[2]&&!r[3]&&!r[4]||r[4]&&n.match(this.rules.other.unicodeAlphaNumeric))return;if(!(r[1]||r[3]||"")||!n||this.rules.inline.punctuation.exec(n)){let s=[...r[0]].length-1,a,o,l=s,p=0,c=r[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(c.lastIndex=0,t=t.slice(-1*e.length+s);(r=c.exec(t))!=null;){if(a=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!a)continue;if(o=[...a].length,r[3]||r[4]){l+=o;continue}else if((r[5]||r[6])&&s%3&&!((s+o)%3)){p+=o;continue}if(l-=o,l>0)continue;o=Math.min(o,o+l+p);let d=[...r[0]][0].length,h=e.slice(0,s+r.index+d+o);if(Math.min(s,o)%2){let f=h.slice(1,-1);return{type:"em",raw:h,text:f,tokens:this.lexer.inlineTokens(f)}}let R=h.slice(2,-2);return{type:"strong",raw:h,text:R,tokens:this.lexer.inlineTokens(R)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let n=t[2].replace(this.rules.other.newLineCharGlobal," "),r=this.rules.other.nonSpaceChar.test(n),i=this.rules.other.startingSpaceChar.test(n)&&this.rules.other.endingSpaceChar.test(n);return r&&i&&(n=n.substring(1,n.length-1)),{type:"codespan",raw:t[0],text:n}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}}del(e,t,n=""){let r=this.rules.inline.delLDelim.exec(e);if(!r)return;if(!(r[1]||"")||!n||this.rules.inline.punctuation.exec(n)){let s=[...r[0]].length-1,a,o,l=s,p=this.rules.inline.delRDelim;for(p.lastIndex=0,t=t.slice(-1*e.length+s);(r=p.exec(t))!=null;){if(a=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!a||(o=[...a].length,o!==s))continue;if(r[3]||r[4]){l+=o;continue}if(l-=o,l>0)continue;o=Math.min(o,o+l);let c=[...r[0]][0].length,d=e.slice(0,s+r.index+c+o),h=d.slice(s,-s);return{type:"del",raw:d,text:h,tokens:this.lexer.inlineTokens(h)}}}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let n,r;return t[2]==="@"?(n=t[1],r="mailto:"+n):(n=t[1],r=n),{type:"link",raw:t[0],text:n,href:r,tokens:[{type:"text",raw:n,text:n}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let n,r;if(t[2]==="@")n=t[0],r="mailto:"+n;else{let i;do i=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??"";while(i!==t[0]);n=t[0],t[1]==="www."?r="http://"+t[0]:r=t[0]}return{type:"link",raw:t[0],text:n,href:r,tokens:[{type:"text",raw:n,text:n}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let n=this.lexer.state.inRawBlock;return{type:"text",raw:t[0],text:t[0],escaped:n}}}};var x=class u{tokens;options;state;inlineQueue;tokenizer;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||T,this.options.tokenizer=this.options.tokenizer||new w,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let t={other:m,block:B.normal,inline:E.normal};this.options.pedantic?(t.block=B.pedantic,t.inline=E.pedantic):this.options.gfm&&(t.block=B.gfm,this.options.breaks?t.inline=E.breaks:t.inline=E.gfm),this.tokenizer.rules=t}static get rules(){return{block:B,inline:E}}static lex(e,t){return new u(t).lex(e)}static lexInline(e,t){return new u(t).inlineTokens(e)}lex(e){e=e.replace(m.carriageReturn,`
|
|
106940
|
+
`),this.blockTokens(e,this.tokens);for(let t=0;t<this.inlineQueue.length;t++){let n=this.inlineQueue[t];this.inlineTokens(n.src,n.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(e,t=[],n=!1){for(this.tokenizer.lexer=this,this.options.pedantic&&(e=e.replace(m.tabCharGlobal," ").replace(m.spaceLine,""));e;){let r;if(this.options.extensions?.block?.some(s=>(r=s.call({lexer:this},e,t))?(e=e.substring(r.raw.length),t.push(r),!0):!1))continue;if(r=this.tokenizer.space(e)){e=e.substring(r.raw.length);let s=t.at(-1);r.raw.length===1&&s!==void 0?s.raw+=`
|
|
106564
106941
|
`:t.push(r);continue}if(r=this.tokenizer.code(e)){e=e.substring(r.raw.length);let s=t.at(-1);s?.type==="paragraph"||s?.type==="text"?(s.raw+=(s.raw.endsWith(`
|
|
106565
106942
|
`)?"":`
|
|
106566
106943
|
`)+r.raw,s.text+=`
|
|
@@ -106573,7 +106950,7 @@ ${c}`:c;let d=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTo
|
|
|
106573
106950
|
`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):t.push(r),n=i.length!==e.length,e=e.substring(r.raw.length);continue}if(r=this.tokenizer.text(e)){e=e.substring(r.raw.length);let s=t.at(-1);s?.type==="text"?(s.raw+=(s.raw.endsWith(`
|
|
106574
106951
|
`)?"":`
|
|
106575
106952
|
`)+r.raw,s.text+=`
|
|
106576
|
-
`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):t.push(r);continue}if(e){let s="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(s);break}else throw new Error(s)}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}inlineTokens(e,t=[]){let n=e,r=null;if(this.tokens.links){let o=Object.keys(this.tokens.links);if(o.length>0)for(;(r=this.tokenizer.rules.inline.reflinkSearch.exec(n))!=null;)o.includes(r[0].slice(r[0].lastIndexOf("[")+1,-1))&&(n=n.slice(0,r.index)+"["+"a".repeat(r[0].length-2)+"]"+n.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(r=this.tokenizer.rules.inline.anyPunctuation.exec(n))!=null;)n=n.slice(0,r.index)+"++"+n.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);let i;for(;(r=this.tokenizer.rules.inline.blockSkip.exec(n))!=null;)i=r[2]?r[2].length:0,n=n.slice(0,r.index+i)+"["+"a".repeat(r[0].length-i-2)+"]"+n.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);n=this.options.hooks?.emStrongMask?.call({lexer:this},n)??n;let s=!1,a="";for(;e;){s||(a=""),s=!1;let o;if(this.options.extensions?.inline?.some(p=>(o=p.call({lexer:this},e,t))?(e=e.substring(o.raw.length),t.push(o),!0):!1))continue;if(o=this.tokenizer.escape(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.tag(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.link(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(o.raw.length);let p=t.at(-1);o.type==="text"&&p?.type==="text"?(p.raw+=o.raw,p.text+=o.text):t.push(o);continue}if(o=this.tokenizer.emStrong(e,n,a)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.codespan(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.br(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.del(e,n,a)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.autolink(e)){e=e.substring(o.raw.length),t.push(o);continue}if(!this.state.inLink&&(o=this.tokenizer.url(e))){e=e.substring(o.raw.length),t.push(o);continue}let l=e;if(this.options.extensions?.startInline){let p=1/0,c=e.slice(1),d;this.options.extensions.startInline.forEach(h=>{d=h.call({lexer:this},c),typeof d=="number"&&d>=0&&(p=Math.min(p,d))}),p<1/0&&p>=0&&(l=e.substring(0,p+1))}if(o=this.tokenizer.inlineText(l)){e=e.substring(o.raw.length),o.raw.slice(-1)!=="_"&&(a=o.raw.slice(-1)),s=!0;let p=t.at(-1);p?.type==="text"?(p.raw+=o.raw,p.text+=o.text):t.push(o);continue}if(e){let p="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(p);break}else throw new Error(p)}}return t}};var y=class{options;parser;constructor(e){this.options=e||T}space(e){return""}code({text:e,lang:t,escaped:n}){let r=(t||"").match(m.notSpaceStart)?.[0],i=e.replace(m.endingNewline,"")+`
|
|
106953
|
+
`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):t.push(r);continue}if(e){let s="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(s);break}else throw new Error(s)}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}inlineTokens(e,t=[]){this.tokenizer.lexer=this;let n=e,r=null;if(this.tokens.links){let o=Object.keys(this.tokens.links);if(o.length>0)for(;(r=this.tokenizer.rules.inline.reflinkSearch.exec(n))!=null;)o.includes(r[0].slice(r[0].lastIndexOf("[")+1,-1))&&(n=n.slice(0,r.index)+"["+"a".repeat(r[0].length-2)+"]"+n.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(r=this.tokenizer.rules.inline.anyPunctuation.exec(n))!=null;)n=n.slice(0,r.index)+"++"+n.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);let i;for(;(r=this.tokenizer.rules.inline.blockSkip.exec(n))!=null;)i=r[2]?r[2].length:0,n=n.slice(0,r.index+i)+"["+"a".repeat(r[0].length-i-2)+"]"+n.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);n=this.options.hooks?.emStrongMask?.call({lexer:this},n)??n;let s=!1,a="";for(;e;){s||(a=""),s=!1;let o;if(this.options.extensions?.inline?.some(p=>(o=p.call({lexer:this},e,t))?(e=e.substring(o.raw.length),t.push(o),!0):!1))continue;if(o=this.tokenizer.escape(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.tag(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.link(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(o.raw.length);let p=t.at(-1);o.type==="text"&&p?.type==="text"?(p.raw+=o.raw,p.text+=o.text):t.push(o);continue}if(o=this.tokenizer.emStrong(e,n,a)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.codespan(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.br(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.del(e,n,a)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.autolink(e)){e=e.substring(o.raw.length),t.push(o);continue}if(!this.state.inLink&&(o=this.tokenizer.url(e))){e=e.substring(o.raw.length),t.push(o);continue}let l=e;if(this.options.extensions?.startInline){let p=1/0,c=e.slice(1),d;this.options.extensions.startInline.forEach(h=>{d=h.call({lexer:this},c),typeof d=="number"&&d>=0&&(p=Math.min(p,d))}),p<1/0&&p>=0&&(l=e.substring(0,p+1))}if(o=this.tokenizer.inlineText(l)){e=e.substring(o.raw.length),o.raw.slice(-1)!=="_"&&(a=o.raw.slice(-1)),s=!0;let p=t.at(-1);p?.type==="text"?(p.raw+=o.raw,p.text+=o.text):t.push(o);continue}if(e){let p="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(p);break}else throw new Error(p)}}return t}};var y=class{options;parser;constructor(e){this.options=e||T}space(e){return""}code({text:e,lang:t,escaped:n}){let r=(t||"").match(m.notSpaceStart)?.[0],i=e.replace(m.endingNewline,"")+`
|
|
106577
106954
|
`;return r?'<pre><code class="language-'+O(r)+'">'+(n?i:O(i,!0))+`</code></pre>
|
|
106578
106955
|
`:"<pre><code>"+(n?i:O(i,!0))+`</code></pre>
|
|
106579
106956
|
`}blockquote({tokens:e}){return`<blockquote>
|
|
@@ -106591,8 +106968,8 @@ ${this.parser.parse(e)}</blockquote>
|
|
|
106591
106968
|
`}tablerow({text:e}){return`<tr>
|
|
106592
106969
|
${e}</tr>
|
|
106593
106970
|
`}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?"th":"td";return(e.align?`<${n} align="${e.align}">`:`<${n}>`)+t+`</${n}>
|
|
106594
|
-
`}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${O(e,!0)}</code>`}br(e){return"<br>"}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:t,tokens:n}){let r=this.parser.parseInline(n),i=
|
|
106595
|
-
Please report this to https://github.com/markedjs/marked.`,e){let r="<p>An error occurred:</p><pre>"+O(n.message+"",!0)+"</pre>";return t?Promise.resolve(r):r}if(t)return Promise.reject(n);throw n}}};var L=new
|
|
106971
|
+
`}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${O(e,!0)}</code>`}br(e){return"<br>"}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:t,tokens:n}){let r=this.parser.parseInline(n),i=J(e);if(i===null)return r;e=i;let s='<a href="'+e+'"';return t&&(s+=' title="'+O(t)+'"'),s+=">"+r+"</a>",s}image({href:e,title:t,text:n,tokens:r}){r&&(n=this.parser.parseInline(r,this.parser.textRenderer));let i=J(e);if(i===null)return O(n);e=i;let s=`<img src="${e}" alt="${O(n)}"`;return t&&(s+=` title="${O(t)}"`),s+=">",s}text(e){return"tokens"in e&&e.tokens?this.parser.parseInline(e.tokens):"escaped"in e&&e.escaped?e.text:O(e.text)}};var $=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return""+e}image({text:e}){return""+e}br(){return""}checkbox({raw:e}){return e}};var b=class u{options;renderer;textRenderer;constructor(e){this.options=e||T,this.options.renderer=this.options.renderer||new y,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new $}static parse(e,t){return new u(t).parse(e)}static parseInline(e,t){return new u(t).parseInline(e)}parse(e){this.renderer.parser=this;let t="";for(let n=0;n<e.length;n++){let r=e[n];if(this.options.extensions?.renderers?.[r.type]){let s=r,a=this.options.extensions.renderers[s.type].call({parser:this},s);if(a!==!1||!["space","hr","heading","code","table","blockquote","list","html","def","paragraph","text"].includes(s.type)){t+=a||"";continue}}let i=r;switch(i.type){case"space":{t+=this.renderer.space(i);break}case"hr":{t+=this.renderer.hr(i);break}case"heading":{t+=this.renderer.heading(i);break}case"code":{t+=this.renderer.code(i);break}case"table":{t+=this.renderer.table(i);break}case"blockquote":{t+=this.renderer.blockquote(i);break}case"list":{t+=this.renderer.list(i);break}case"checkbox":{t+=this.renderer.checkbox(i);break}case"html":{t+=this.renderer.html(i);break}case"def":{t+=this.renderer.def(i);break}case"paragraph":{t+=this.renderer.paragraph(i);break}case"text":{t+=this.renderer.text(i);break}default:{let s='Token with "'+i.type+'" type was not found.';if(this.options.silent)return console.error(s),"";throw new Error(s)}}}return t}parseInline(e,t=this.renderer){this.renderer.parser=this;let n="";for(let r=0;r<e.length;r++){let i=e[r];if(this.options.extensions?.renderers?.[i.type]){let a=this.options.extensions.renderers[i.type].call({parser:this},i);if(a!==!1||!["escape","html","link","image","strong","em","codespan","br","del","text"].includes(i.type)){n+=a||"";continue}}let s=i;switch(s.type){case"escape":{n+=t.text(s);break}case"html":{n+=t.html(s);break}case"link":{n+=t.link(s);break}case"image":{n+=t.image(s);break}case"checkbox":{n+=t.checkbox(s);break}case"strong":{n+=t.strong(s);break}case"em":{n+=t.em(s);break}case"codespan":{n+=t.codespan(s);break}case"br":{n+=t.br(s);break}case"del":{n+=t.del(s);break}case"text":{n+=t.text(s);break}default:{let a='Token with "'+s.type+'" type was not found.';if(this.options.silent)return console.error(a),"";throw new Error(a)}}}return n}};var P=class{options;block;constructor(e){this.options=e||T}static passThroughHooks=new Set(["preprocess","postprocess","processAllTokens","emStrongMask"]);static passThroughHooksRespectAsync=new Set(["preprocess","postprocess","processAllTokens"]);preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}emStrongMask(e){return e}provideLexer(){return this.block?x.lex:x.lexInline}provideParser(){return this.block?b.parse:b.parseInline}};var D=class{defaults=M();options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=b;Renderer=y;TextRenderer=$;Lexer=x;Tokenizer=w;Hooks=P;constructor(...e){this.use(...e)}walkTokens(e,t){let n=[];for(let r of e)switch(n=n.concat(t.call(this,r)),r.type){case"table":{let i=r;for(let s of i.header)n=n.concat(this.walkTokens(s.tokens,t));for(let s of i.rows)for(let a of s)n=n.concat(this.walkTokens(a.tokens,t));break}case"list":{let i=r;n=n.concat(this.walkTokens(i.items,t));break}default:{let i=r;this.defaults.extensions?.childTokens?.[i.type]?this.defaults.extensions.childTokens[i.type].forEach(s=>{let a=i[s].flat(1/0);n=n.concat(this.walkTokens(a,t))}):i.tokens&&(n=n.concat(this.walkTokens(i.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(n=>{let r={...n};if(r.async=this.defaults.async||r.async||!1,n.extensions&&(n.extensions.forEach(i=>{if(!i.name)throw new Error("extension name required");if("renderer"in i){let s=t.renderers[i.name];s?t.renderers[i.name]=function(...a){let o=i.renderer.apply(this,a);return o===!1&&(o=s.apply(this,a)),o}:t.renderers[i.name]=i.renderer}if("tokenizer"in i){if(!i.level||i.level!=="block"&&i.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let s=t[i.level];s?s.unshift(i.tokenizer):t[i.level]=[i.tokenizer],i.start&&(i.level==="block"?t.startBlock?t.startBlock.push(i.start):t.startBlock=[i.start]:i.level==="inline"&&(t.startInline?t.startInline.push(i.start):t.startInline=[i.start]))}"childTokens"in i&&i.childTokens&&(t.childTokens[i.name]=i.childTokens)}),r.extensions=t),n.renderer){let i=this.defaults.renderer||new y(this.defaults);for(let s in n.renderer){if(!(s in i))throw new Error(`renderer '${s}' does not exist`);if(["options","parser"].includes(s))continue;let a=s,o=n.renderer[a],l=i[a];i[a]=(...p)=>{let c=o.apply(i,p);return c===!1&&(c=l.apply(i,p)),c||""}}r.renderer=i}if(n.tokenizer){let i=this.defaults.tokenizer||new w(this.defaults);for(let s in n.tokenizer){if(!(s in i))throw new Error(`tokenizer '${s}' does not exist`);if(["options","rules","lexer"].includes(s))continue;let a=s,o=n.tokenizer[a],l=i[a];i[a]=(...p)=>{let c=o.apply(i,p);return c===!1&&(c=l.apply(i,p)),c}}r.tokenizer=i}if(n.hooks){let i=this.defaults.hooks||new P;for(let s in n.hooks){if(!(s in i))throw new Error(`hook '${s}' does not exist`);if(["options","block"].includes(s))continue;let a=s,o=n.hooks[a],l=i[a];P.passThroughHooks.has(s)?i[a]=p=>{if(this.defaults.async&&P.passThroughHooksRespectAsync.has(s))return(async()=>{let d=await o.call(i,p);return l.call(i,d)})();let c=o.call(i,p);return l.call(i,c)}:i[a]=(...p)=>{if(this.defaults.async)return(async()=>{let d=await o.apply(i,p);return d===!1&&(d=await l.apply(i,p)),d})();let c=o.apply(i,p);return c===!1&&(c=l.apply(i,p)),c}}r.hooks=i}if(n.walkTokens){let i=this.defaults.walkTokens,s=n.walkTokens;r.walkTokens=function(a){let o=[];return o.push(s.call(this,a)),i&&(o=o.concat(i.call(this,a))),o}}this.defaults={...this.defaults,...r}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return x.lex(e,t??this.defaults)}parser(e,t){return b.parse(e,t??this.defaults)}parseMarkdown(e){return(n,r)=>{let i={...r},s={...this.defaults,...i},a=this.onError(!!s.silent,!!s.async);if(this.defaults.async===!0&&i.async===!1)return a(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof n>"u"||n===null)return a(new Error("marked(): input parameter is undefined or null"));if(typeof n!="string")return a(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(n)+", string expected"));if(s.hooks&&(s.hooks.options=s,s.hooks.block=e),s.async)return(async()=>{let o=s.hooks?await s.hooks.preprocess(n):n,p=await(s.hooks?await s.hooks.provideLexer():e?x.lex:x.lexInline)(o,s),c=s.hooks?await s.hooks.processAllTokens(p):p;s.walkTokens&&await Promise.all(this.walkTokens(c,s.walkTokens));let h=await(s.hooks?await s.hooks.provideParser():e?b.parse:b.parseInline)(c,s);return s.hooks?await s.hooks.postprocess(h):h})().catch(a);try{s.hooks&&(n=s.hooks.preprocess(n));let l=(s.hooks?s.hooks.provideLexer():e?x.lex:x.lexInline)(n,s);s.hooks&&(l=s.hooks.processAllTokens(l)),s.walkTokens&&this.walkTokens(l,s.walkTokens);let c=(s.hooks?s.hooks.provideParser():e?b.parse:b.parseInline)(l,s);return s.hooks&&(c=s.hooks.postprocess(c)),c}catch(o){return a(o)}}}onError(e,t){return n=>{if(n.message+=`
|
|
106972
|
+
Please report this to https://github.com/markedjs/marked.`,e){let r="<p>An error occurred:</p><pre>"+O(n.message+"",!0)+"</pre>";return t?Promise.resolve(r):r}if(t)return Promise.reject(n);throw n}}};var L=new D;function g(u,e){return L.parse(u,e)}g.options=g.setOptions=function(u){return L.setOptions(u),g.defaults=L.defaults,G(g.defaults),g};g.getDefaults=M;g.defaults=T;g.use=function(...u){return L.use(...u),g.defaults=L.defaults,G(g.defaults),g};g.walkTokens=function(u,e){return L.walkTokens(u,e)};g.parseInline=L.parseInline;g.Parser=b;g.parser=b.parse;g.Renderer=y;g.TextRenderer=$;g.Lexer=x;g.lexer=x.lex;g.Tokenizer=w;g.Hooks=P;g.parse=g;var Qt=g.options,jt=g.setOptions,Ft=g.use,Ut=g.walkTokens,Kt=g.parseInline,Wt=g,Xt=b.parse,Jt=x.lex;
|
|
106596
106973
|
//# sourceMappingURL=marked.esm.js.map
|
|
106597
106974
|
|
|
106598
106975
|
|
|
@@ -113471,6 +113848,9 @@ function createProfileLogic(store, authn, utilityLogic) {
|
|
|
113471
113848
|
|
|
113472
113849
|
function createTypeIndexLogic(store, authn, profileLogic, utilityLogic) {
|
|
113473
113850
|
const ns = ns_ns;
|
|
113851
|
+
function isAbsoluteHttpUri(uri) {
|
|
113852
|
+
return !!uri && (uri.startsWith('https://') || uri.startsWith('http://'));
|
|
113853
|
+
}
|
|
113474
113854
|
function getRegistrations(instance, theClass) {
|
|
113475
113855
|
return store
|
|
113476
113856
|
.each(undefined, ns.solid('instance'), instance)
|
|
@@ -113563,14 +113943,23 @@ function createTypeIndexLogic(store, authn, profileLogic, utilityLogic) {
|
|
|
113563
113943
|
const communities = store.each(user, ns.solid('community'), undefined, preferencesFile).concat(store.each(user, ns.solid('community'), undefined, user.doc()));
|
|
113564
113944
|
let result = [];
|
|
113565
113945
|
for (const org of communities) {
|
|
113566
|
-
|
|
113946
|
+
if (org.termType !== 'NamedNode' || !isAbsoluteHttpUri(org.uri)) {
|
|
113947
|
+
warn(`Skipping malformed community node for ${user}: ${org}`);
|
|
113948
|
+
continue;
|
|
113949
|
+
}
|
|
113950
|
+
try {
|
|
113951
|
+
result = result.concat(await loadTypeIndexesFor(org));
|
|
113952
|
+
}
|
|
113953
|
+
catch (err) {
|
|
113954
|
+
warn(`Skipping community type indexes for ${org.uri}: ${err}`);
|
|
113955
|
+
}
|
|
113567
113956
|
}
|
|
113568
113957
|
return result;
|
|
113569
113958
|
}
|
|
113570
113959
|
return []; // No communities
|
|
113571
113960
|
}
|
|
113572
113961
|
async function loadAllTypeIndexes(user) {
|
|
113573
|
-
return (await loadTypeIndexesFor(user)).concat(
|
|
113962
|
+
return (await loadTypeIndexesFor(user)).concat(await loadCommunityTypeIndexes(user));
|
|
113574
113963
|
}
|
|
113575
113964
|
async function getScopedAppInstances(klass, user) {
|
|
113576
113965
|
const scopes = await loadAllTypeIndexes(user);
|
|
@@ -113594,11 +113983,11 @@ function createTypeIndexLogic(store, authn, profileLogic, utilityLogic) {
|
|
|
113594
113983
|
function docDirUri(node) {
|
|
113595
113984
|
const doc = node.doc();
|
|
113596
113985
|
const dir = doc.dir();
|
|
113597
|
-
if (dir === null || dir === void 0 ? void 0 : dir.uri)
|
|
113986
|
+
if ((dir === null || dir === void 0 ? void 0 : dir.uri) && isAbsoluteHttpUri(dir.uri))
|
|
113598
113987
|
return dir.uri;
|
|
113599
113988
|
const docUri = doc.uri;
|
|
113600
|
-
if (!docUri) {
|
|
113601
|
-
log(`docDirUri: missing doc uri for ${node === null || node === void 0 ? void 0 : node.uri}`);
|
|
113989
|
+
if (!docUri || !isAbsoluteHttpUri(docUri)) {
|
|
113990
|
+
log(`docDirUri: missing or non-http(s) doc uri for ${node === null || node === void 0 ? void 0 : node.uri}`);
|
|
113602
113991
|
return null;
|
|
113603
113992
|
}
|
|
113604
113993
|
const withoutFragment = docUri.split('#')[0];
|
|
@@ -114365,32 +114754,38 @@ var dist = __webpack_require__(7523);
|
|
|
114365
114754
|
var solid_logic_esm = __webpack_require__(9332);
|
|
114366
114755
|
;// ./src/versionInfo.ts
|
|
114367
114756
|
/* harmony default export */ const versionInfo = ({
|
|
114368
|
-
buildTime: '2026-
|
|
114369
|
-
commit: '
|
|
114757
|
+
buildTime: '2026-03-23T14:34:25Z',
|
|
114758
|
+
commit: 'e3cab069577b9b440fa3652d96ae4f2bb3229f96',
|
|
114370
114759
|
npmInfo: {
|
|
114371
|
-
'mashlib': '2.1.
|
|
114372
|
-
'npm': '10.
|
|
114373
|
-
'node': '
|
|
114760
|
+
'mashlib': '2.1.4',
|
|
114761
|
+
'npm': '10.9.4',
|
|
114762
|
+
'node': '22.22.1',
|
|
114374
114763
|
'acorn': '8.15.0',
|
|
114375
114764
|
'ada': '2.9.2',
|
|
114765
|
+
'amaro': '1.1.5',
|
|
114376
114766
|
'ares': '1.34.6',
|
|
114377
114767
|
'brotli': '1.1.0',
|
|
114378
|
-
'cjs_module_lexer': '2.
|
|
114379
|
-
'cldr': '
|
|
114380
|
-
'icu': '
|
|
114768
|
+
'cjs_module_lexer': '2.2.0',
|
|
114769
|
+
'cldr': '48.0',
|
|
114770
|
+
'icu': '78.2',
|
|
114381
114771
|
'llhttp': '9.3.0',
|
|
114382
|
-
'modules': '
|
|
114383
|
-
'napi': '
|
|
114384
|
-
'
|
|
114385
|
-
'
|
|
114772
|
+
'modules': '127',
|
|
114773
|
+
'napi': '10',
|
|
114774
|
+
'nbytes': '0.1.1',
|
|
114775
|
+
'ncrypto': '0.0.1',
|
|
114776
|
+
'nghttp2': '1.64.0',
|
|
114777
|
+
'openssl': '3.5.5',
|
|
114778
|
+
'simdjson': '4.2.4',
|
|
114386
114779
|
'simdutf': '6.4.2',
|
|
114387
|
-
'
|
|
114780
|
+
'sqlite': '3.51.2',
|
|
114781
|
+
'tz': '2025c',
|
|
114388
114782
|
'undici': '6.23.0',
|
|
114389
|
-
'unicode': '
|
|
114390
|
-
'uv': '1.
|
|
114783
|
+
'unicode': '17.0',
|
|
114784
|
+
'uv': '1.51.0',
|
|
114391
114785
|
'uvwasi': '0.0.23',
|
|
114392
|
-
'v8': '
|
|
114393
|
-
'zlib': '1.3.1-
|
|
114786
|
+
'v8': '12.4.254.21-node.35',
|
|
114787
|
+
'zlib': '1.3.1-e00f703',
|
|
114788
|
+
'zstd': '1.5.7'
|
|
114394
114789
|
}
|
|
114395
114790
|
});
|
|
114396
114791
|
;// ./src/styles/mash.css
|