@beinformed/ui 1.43.1 → 1.43.3
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/CHANGELOG.md +14 -0
- package/esm/models/content/ContentLinkModel.js +3 -2
- package/esm/models/content/ContentLinkModel.js.map +1 -1
- package/esm/redux/actions/Error.js +1 -1
- package/esm/redux/actions/Error.js.map +1 -1
- package/lib/models/content/ContentLinkModel.js +3 -2
- package/lib/models/content/ContentLinkModel.js.flow +12 -17
- package/lib/models/content/ContentLinkModel.js.map +1 -1
- package/lib/redux/actions/Error.js +1 -1
- package/lib/redux/actions/Error.js.flow +1 -1
- package/lib/redux/actions/Error.js.map +1 -1
- package/package.json +2 -2
- package/src/models/content/ContentLinkModel.js +12 -17
- package/src/redux/actions/Error.js +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
## [1.43.3](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/compare/v1.43.2...v1.43.3) (2024-03-13)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
* **error:** rethrow error on default error response handler ([1610a40](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/commit/1610a405ac2dd4c3c58d2eb88d88e9fd7e87ee94))
|
|
11
|
+
|
|
12
|
+
## [1.43.2](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/compare/v1.43.1...v1.43.2) (2024-03-13)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
### Bug Fixes
|
|
16
|
+
|
|
17
|
+
* **content:** encode section id's ([6a5d923](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/commit/6a5d923b766d1e8fe364739daf75668551ee5d41))
|
|
18
|
+
|
|
5
19
|
## [1.43.1](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/compare/v1.43.0...v1.43.1) (2024-03-11)
|
|
6
20
|
|
|
7
21
|
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime-corejs3/helpers/esm/defineProperty";
|
|
2
2
|
import _findInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/find";
|
|
3
|
-
import { has } from "../../utils/helpers/objects";
|
|
4
3
|
import BaseModel from "../base/BaseModel";
|
|
5
4
|
import Href from "../href/Href";
|
|
6
5
|
import LinkModel from "../links/LinkModel";
|
|
@@ -95,7 +94,9 @@ export default class ContentLinkModel extends BaseModel {
|
|
|
95
94
|
get encodedHref() {
|
|
96
95
|
const startURI = "/content/";
|
|
97
96
|
const selfhref = this.data._links.self.href;
|
|
98
|
-
const
|
|
97
|
+
const section = this.data.section;
|
|
98
|
+
const path = section ? `${startURI}${encodeURIComponent(selfhref.substring(startURI.length, selfhref.indexOf(this.data.section) - 1))}/${encodeURIComponent(section)}` : `${startURI}${encodeURIComponent(selfhref.substring(startURI.length))}`;
|
|
99
|
+
const href = new Href(path);
|
|
99
100
|
if (this._entryDate !== null) {
|
|
100
101
|
return href.addParameter(TIMEVERSION_FILTER_NAME, this._entryDate);
|
|
101
102
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContentLinkModel.js","names":["
|
|
1
|
+
{"version":3,"file":"ContentLinkModel.js","names":["BaseModel","Href","LinkModel","ContentTypeModel","TIMEVERSION_FILTER_NAME","LinkCollection","ContentLinkModel","constructor","data","entryDate","arguments","length","undefined","_defineProperty","_entryDate","getInitialChildModelLinks","contentTypeLink","isCacheable","setChildModels","models","href","contentTypeModel","_findInstanceProperty","call","model","selfhref","equalsWithParameters","type","contentType","_contentType","key","getData","label","sourceLabel","encodedHref","startURI","_links","self","section","path","encodeURIComponent","substring","indexOf","addParameter","links","Array","isArray","selflink","getLinkByKey","Error","subSectionID","hash","contentTypeHref","items","_items"],"sources":["../../../src/models/content/ContentLinkModel.js"],"sourcesContent":["// @flow\nimport BaseModel from \"../base/BaseModel\";\nimport Href from \"../href/Href\";\nimport LinkModel from \"../links/LinkModel\";\nimport ContentTypeModel from \"./ContentTypeModel\";\nimport { TIMEVERSION_FILTER_NAME } from \"../../constants/Constants\";\n\nimport LinkCollection from \"../links/LinkCollection\";\n\nimport type { ModularUIModel, IModelWithChildModels } from \"../types\";\n\n/**\n * Link to a concept\n */\nexport default class ContentLinkModel\n extends BaseModel\n implements IModelWithChildModels\n{\n _links: ?LinkCollection;\n _entryDate: ?ISO_DATE;\n _contentType: ContentTypeModel | null = null;\n _items: Array<ContentLinkModel>;\n\n /**\n */\n constructor(data: Object, entryDate: ?ISO_DATE = null) {\n super(data, {});\n\n this._entryDate = entryDate;\n }\n\n /**\n */\n // $FlowFixMe[method-unbinding]\n getInitialChildModelLinks(): Array<LinkModel> {\n if (this.contentTypeLink) {\n this.contentTypeLink.isCacheable = true;\n return [this.contentTypeLink];\n }\n\n return [];\n }\n\n /**\n */\n // $FlowFixMe[method-unbinding]\n setChildModels(models: Array<ModularUIModel>) {\n if (this.contentTypeLink) {\n const href = this.contentTypeLink.href;\n const contentTypeModel = models.find((model) =>\n model.selfhref.equalsWithParameters(href),\n );\n\n if (contentTypeModel?.type === \"ContentType\") {\n this.contentType = contentTypeModel;\n }\n }\n }\n\n /**\n * Retrieve content type\n */\n get contentType(): ?ContentTypeModel | null {\n return this._contentType;\n }\n\n /**\n * Set concept type\n */\n set contentType(contentType: ?ModularUIModel) {\n this._contentType =\n contentType instanceof ContentTypeModel ? contentType : null;\n }\n\n /**\n */\n set entryDate(entryDate: ISO_DATE) {\n this._entryDate = entryDate;\n }\n\n /**\n * Retrieve key\n */\n get key(): string {\n return this.getData(\"_id\", \"\");\n }\n\n /**\n * Retrieve label\n */\n get label(): string {\n return this.getData(\"label\", \"\");\n }\n\n /**\n * Retrieve the label of the source a link to a section belongs to\n */\n get sourceLabel(): string | null {\n return this.getData(\"sourceLabel\");\n }\n\n /**\n * Encode the content-identifier of the path to the content resource.\n * This makes it a single uri part, which can be used on routes to make nested routes\n */\n get encodedHref(): Href {\n const startURI = \"/content/\";\n const selfhref = this.data._links.self.href;\n const section = this.data.section;\n\n const path = section\n ? `${startURI}${encodeURIComponent(\n selfhref.substring(\n startURI.length,\n selfhref.indexOf(this.data.section) - 1,\n ),\n )}/${encodeURIComponent(section)}`\n : `${startURI}${encodeURIComponent(selfhref.substring(startURI.length))}`;\n\n const href = new Href(path);\n\n if (this._entryDate !== null) {\n return href.addParameter(TIMEVERSION_FILTER_NAME, this._entryDate);\n }\n\n return href;\n }\n\n /**\n * Getting the links of the resource\n */\n get links(): LinkCollection {\n if (!this._links) {\n this._links = new LinkCollection(\n Array.isArray(this.data._links)\n ? this.data._links[0]\n : this.data._links,\n );\n }\n\n return this._links;\n }\n\n /**\n * Get self link of model\n */\n get selflink(): LinkModel {\n const selflink = this.links.getLinkByKey(\"self\");\n\n if (selflink === null) {\n throw new Error(\n `Could not find self link for ${\n this.key === null ? \"unknown\" : this.key\n }`,\n );\n }\n\n return selflink;\n }\n\n /**\n * Self href of concept\n */\n get selfhref(): Href {\n if (this._entryDate !== null) {\n return this.selflink.href.addParameter(\n TIMEVERSION_FILTER_NAME,\n this._entryDate,\n );\n }\n\n return this.selflink.href;\n }\n\n /**\n */\n get subSectionID(): string {\n return this.selfhref.hash;\n }\n\n /**\n */\n get contentTypeLink(): LinkModel | null {\n return this.links.getLinkByKey(\"contenttype\");\n }\n\n /**\n * Concept type href of concept\n */\n get contentTypeHref(): Href | null {\n if (this.contentTypeLink) {\n return this.contentTypeLink.href;\n }\n\n return null;\n }\n\n /**\n * Children of link model in TOC\n */\n set items(items: Array<ContentLinkModel>) {\n this._items = items;\n }\n\n /**\n */\n get items(): Array<ContentLinkModel> {\n return this._items;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Error.js","names":["IS_SERVER","getSetting","ErrorResponse","push","showXHRErrorNotification","resetProgress","changePassword","handleUnauthorized","saveError","error","type","payload","defaultErrorResponseHandler","dispatch","isResourceNotFoundAfterReload","isRemoteServiceException","isUnauthorized","isBlocked","isConcurrentUser","isInvalidUsername","LOGOUT_PATH","isChangePassword","setTimeout","customErrorResponseHandler","errorResponse","defaultHandler","setCustomErrorResponseHandler","handler","handleError"],"sources":["../../../src/redux/actions/Error.js"],"sourcesContent":["// @flow\nimport { IS_SERVER } from \"../../constants/Constants\";\nimport { getSetting } from \"../../constants/Settings\";\n\nimport ErrorResponse from \"../../models/error/ErrorResponse\";\n\nimport { push } from \"../_router/RouterActions\";\nimport { showXHRErrorNotification } from \"./Notification\";\nimport { resetProgress } from \"./ProgressIndicator\";\nimport { changePassword } from \"./SignIn\";\nimport { handleUnauthorized } from \"./Authorization\";\n\nimport type { FetchException } from \"../../exceptions\";\nimport type { Dispatch, SaveErrorAction, ThunkAction } from \"../types\";\n\ntype DefaultErrorResponseHandler = (error: ErrorResponse) => ThunkAction;\ntype CustomErrorResponseHandler = (\n errorResponse: ErrorResponse,\n defaultHandler: DefaultErrorResponseHandler,\n) => ThunkAction;\n\n/**\n */\nconst saveError = (error: ErrorResponse): SaveErrorAction => ({\n type: \"SAVE_ERROR\",\n payload: error,\n});\n\n/**\n */\nconst defaultErrorResponseHandler: DefaultErrorResponseHandler =\n (error: ErrorResponse): ThunkAction =>\n (dispatch: Dispatch) => {\n if (error.isResourceNotFoundAfterReload || error.isRemoteServiceException) {\n return dispatch({ type: \"NO_ACTION\" });\n }\n\n if (error.isUnauthorized) {\n return dispatch(handleUnauthorized(error));\n }\n\n if (error.isBlocked || error.isConcurrentUser || error.isInvalidUsername) {\n const LOGOUT_PATH = getSetting(\"LOGOUT_PATH\", \"/signout\");\n dispatch(push(LOGOUT_PATH));\n }\n\n if (error.isChangePassword) {\n return dispatch(changePassword());\n }\n\n if (IS_SERVER) {\n return dispatch(saveError(error));\n }\n\n setTimeout(() => {\n throw error;\n });\n\n return dispatch(showXHRErrorNotification(error));\n };\n\n/**\n * Standard Custom error response, acts as a proxy and can be overwritten by {@link setCustomErrorResponseHandler}\n */\nlet customErrorResponseHandler: CustomErrorResponseHandler =\n (errorResponse, defaultHandler) => (dispatch: Dispatch) =>\n dispatch(defaultHandler(errorResponse));\n\n/**\n * Set a custom error response handler,\n * can be used when custom functionality is needed on certain (error) response\n * of the modular ui, for example when custom logic is needed when a user is unauthorized<br>\n * It receives an {@link ErrorResponse} and the {@link defaultErrorResponseHandler}\n */\nexport const setCustomErrorResponseHandler = (\n handler: CustomErrorResponseHandler,\n) => {\n customErrorResponseHandler = handler;\n};\n\n/**\n * Handle errors by sending an error notification message\n */\nexport const handleError =\n (error: Error | FetchException): ThunkAction =>\n (dispatch: Dispatch) => {\n dispatch(resetProgress());\n\n const errorResponse = new ErrorResponse(error);\n\n return dispatch(\n customErrorResponseHandler(errorResponse, defaultErrorResponseHandler),\n );\n };\n"],"mappings":"AACA,SAASA,SAAS,QAAQ,2BAA2B;AACrD,SAASC,UAAU,QAAQ,0BAA0B;AAErD,OAAOC,aAAa,MAAM,kCAAkC;AAE5D,SAASC,IAAI,QAAQ,0BAA0B;AAC/C,SAASC,wBAAwB,QAAQ,gBAAgB;AACzD,SAASC,aAAa,QAAQ,qBAAqB;AACnD,SAASC,cAAc,QAAQ,UAAU;AACzC,SAASC,kBAAkB,QAAQ,iBAAiB;AAWpD;AACA;AACA,MAAMC,SAAS,GAAIC,KAAoB,KAAuB;EAC5DC,IAAI,EAAE,YAAY;EAClBC,OAAO,EAAEF;AACX,CAAC,CAAC;;AAEF;AACA;AACA,MAAMG,2BAAwD,GAC3DH,KAAoB,IACpBI,QAAkB,IAAK;EACtB,IAAIJ,KAAK,CAACK,6BAA6B,IAAIL,KAAK,CAACM,wBAAwB,EAAE;IACzE,OAAOF,QAAQ,CAAC;MAAEH,IAAI,EAAE;IAAY,CAAC,CAAC;EACxC;EAEA,IAAID,KAAK,CAACO,cAAc,EAAE;IACxB,OAAOH,QAAQ,CAACN,kBAAkB,CAACE,KAAK,CAAC,CAAC;EAC5C;EAEA,IAAIA,KAAK,CAACQ,SAAS,IAAIR,KAAK,CAACS,gBAAgB,IAAIT,KAAK,CAACU,iBAAiB,EAAE;IACxE,MAAMC,WAAW,GAAGnB,UAAU,CAAC,aAAa,EAAE,UAAU,CAAC;IACzDY,QAAQ,CAACV,IAAI,CAACiB,WAAW,CAAC,CAAC;EAC7B;EAEA,IAAIX,KAAK,CAACY,gBAAgB,EAAE;IAC1B,OAAOR,QAAQ,CAACP,cAAc,CAAC,CAAC,CAAC;EACnC;EAEA,IAAIN,SAAS,EAAE;IACb,OAAOa,QAAQ,CAACL,SAAS,CAACC,KAAK,CAAC,CAAC;EACnC;EAEAa,UAAU,CAAC,MAAM;IACf,MAAMb,KAAK;
|
|
1
|
+
{"version":3,"file":"Error.js","names":["IS_SERVER","getSetting","ErrorResponse","push","showXHRErrorNotification","resetProgress","changePassword","handleUnauthorized","saveError","error","type","payload","defaultErrorResponseHandler","dispatch","isResourceNotFoundAfterReload","isRemoteServiceException","isUnauthorized","isBlocked","isConcurrentUser","isInvalidUsername","LOGOUT_PATH","isChangePassword","setTimeout","customErrorResponseHandler","errorResponse","defaultHandler","setCustomErrorResponseHandler","handler","handleError"],"sources":["../../../src/redux/actions/Error.js"],"sourcesContent":["// @flow\nimport { IS_SERVER } from \"../../constants/Constants\";\nimport { getSetting } from \"../../constants/Settings\";\n\nimport ErrorResponse from \"../../models/error/ErrorResponse\";\n\nimport { push } from \"../_router/RouterActions\";\nimport { showXHRErrorNotification } from \"./Notification\";\nimport { resetProgress } from \"./ProgressIndicator\";\nimport { changePassword } from \"./SignIn\";\nimport { handleUnauthorized } from \"./Authorization\";\n\nimport type { FetchException } from \"../../exceptions\";\nimport type { Dispatch, SaveErrorAction, ThunkAction } from \"../types\";\n\ntype DefaultErrorResponseHandler = (error: ErrorResponse) => ThunkAction;\ntype CustomErrorResponseHandler = (\n errorResponse: ErrorResponse,\n defaultHandler: DefaultErrorResponseHandler,\n) => ThunkAction;\n\n/**\n */\nconst saveError = (error: ErrorResponse): SaveErrorAction => ({\n type: \"SAVE_ERROR\",\n payload: error,\n});\n\n/**\n */\nconst defaultErrorResponseHandler: DefaultErrorResponseHandler =\n (error: ErrorResponse): ThunkAction =>\n (dispatch: Dispatch) => {\n if (error.isResourceNotFoundAfterReload || error.isRemoteServiceException) {\n return dispatch({ type: \"NO_ACTION\" });\n }\n\n if (error.isUnauthorized) {\n return dispatch(handleUnauthorized(error));\n }\n\n if (error.isBlocked || error.isConcurrentUser || error.isInvalidUsername) {\n const LOGOUT_PATH = getSetting(\"LOGOUT_PATH\", \"/signout\");\n dispatch(push(LOGOUT_PATH));\n }\n\n if (error.isChangePassword) {\n return dispatch(changePassword());\n }\n\n if (IS_SERVER) {\n return dispatch(saveError(error));\n }\n\n setTimeout(() => {\n throw error.error;\n });\n\n return dispatch(showXHRErrorNotification(error));\n };\n\n/**\n * Standard Custom error response, acts as a proxy and can be overwritten by {@link setCustomErrorResponseHandler}\n */\nlet customErrorResponseHandler: CustomErrorResponseHandler =\n (errorResponse, defaultHandler) => (dispatch: Dispatch) =>\n dispatch(defaultHandler(errorResponse));\n\n/**\n * Set a custom error response handler,\n * can be used when custom functionality is needed on certain (error) response\n * of the modular ui, for example when custom logic is needed when a user is unauthorized<br>\n * It receives an {@link ErrorResponse} and the {@link defaultErrorResponseHandler}\n */\nexport const setCustomErrorResponseHandler = (\n handler: CustomErrorResponseHandler,\n) => {\n customErrorResponseHandler = handler;\n};\n\n/**\n * Handle errors by sending an error notification message\n */\nexport const handleError =\n (error: Error | FetchException): ThunkAction =>\n (dispatch: Dispatch) => {\n dispatch(resetProgress());\n\n const errorResponse = new ErrorResponse(error);\n\n return dispatch(\n customErrorResponseHandler(errorResponse, defaultErrorResponseHandler),\n );\n };\n"],"mappings":"AACA,SAASA,SAAS,QAAQ,2BAA2B;AACrD,SAASC,UAAU,QAAQ,0BAA0B;AAErD,OAAOC,aAAa,MAAM,kCAAkC;AAE5D,SAASC,IAAI,QAAQ,0BAA0B;AAC/C,SAASC,wBAAwB,QAAQ,gBAAgB;AACzD,SAASC,aAAa,QAAQ,qBAAqB;AACnD,SAASC,cAAc,QAAQ,UAAU;AACzC,SAASC,kBAAkB,QAAQ,iBAAiB;AAWpD;AACA;AACA,MAAMC,SAAS,GAAIC,KAAoB,KAAuB;EAC5DC,IAAI,EAAE,YAAY;EAClBC,OAAO,EAAEF;AACX,CAAC,CAAC;;AAEF;AACA;AACA,MAAMG,2BAAwD,GAC3DH,KAAoB,IACpBI,QAAkB,IAAK;EACtB,IAAIJ,KAAK,CAACK,6BAA6B,IAAIL,KAAK,CAACM,wBAAwB,EAAE;IACzE,OAAOF,QAAQ,CAAC;MAAEH,IAAI,EAAE;IAAY,CAAC,CAAC;EACxC;EAEA,IAAID,KAAK,CAACO,cAAc,EAAE;IACxB,OAAOH,QAAQ,CAACN,kBAAkB,CAACE,KAAK,CAAC,CAAC;EAC5C;EAEA,IAAIA,KAAK,CAACQ,SAAS,IAAIR,KAAK,CAACS,gBAAgB,IAAIT,KAAK,CAACU,iBAAiB,EAAE;IACxE,MAAMC,WAAW,GAAGnB,UAAU,CAAC,aAAa,EAAE,UAAU,CAAC;IACzDY,QAAQ,CAACV,IAAI,CAACiB,WAAW,CAAC,CAAC;EAC7B;EAEA,IAAIX,KAAK,CAACY,gBAAgB,EAAE;IAC1B,OAAOR,QAAQ,CAACP,cAAc,CAAC,CAAC,CAAC;EACnC;EAEA,IAAIN,SAAS,EAAE;IACb,OAAOa,QAAQ,CAACL,SAAS,CAACC,KAAK,CAAC,CAAC;EACnC;EAEAa,UAAU,CAAC,MAAM;IACf,MAAMb,KAAK,CAACA,KAAK;EACnB,CAAC,CAAC;EAEF,OAAOI,QAAQ,CAACT,wBAAwB,CAACK,KAAK,CAAC,CAAC;AAClD,CAAC;;AAEH;AACA;AACA;AACA,IAAIc,0BAAsD,GACxDA,CAACC,aAAa,EAAEC,cAAc,KAAMZ,QAAkB,IACpDA,QAAQ,CAACY,cAAc,CAACD,aAAa,CAAC,CAAC;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAME,6BAA6B,GACxCC,OAAmC,IAChC;EACHJ,0BAA0B,GAAGI,OAAO;AACtC,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMC,WAAW,GACrBnB,KAA6B,IAC7BI,QAAkB,IAAK;EACtBA,QAAQ,CAACR,aAAa,CAAC,CAAC,CAAC;EAEzB,MAAMmB,aAAa,GAAG,IAAItB,aAAa,CAACO,KAAK,CAAC;EAE9C,OAAOI,QAAQ,CACbU,0BAA0B,CAACC,aAAa,EAAEZ,2BAA2B,CACvE,CAAC;AACH,CAAC","ignoreList":[]}
|
|
@@ -7,7 +7,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.default = void 0;
|
|
8
8
|
var _find = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/find"));
|
|
9
9
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
|
|
10
|
-
var _objects = require("../../utils/helpers/objects");
|
|
11
10
|
var _BaseModel = _interopRequireDefault(require("../base/BaseModel"));
|
|
12
11
|
var _Href = _interopRequireDefault(require("../href/Href"));
|
|
13
12
|
var _LinkModel = _interopRequireDefault(require("../links/LinkModel"));
|
|
@@ -102,7 +101,9 @@ class ContentLinkModel extends _BaseModel.default {
|
|
|
102
101
|
get encodedHref() {
|
|
103
102
|
const startURI = "/content/";
|
|
104
103
|
const selfhref = this.data._links.self.href;
|
|
105
|
-
const
|
|
104
|
+
const section = this.data.section;
|
|
105
|
+
const path = section ? `${startURI}${encodeURIComponent(selfhref.substring(startURI.length, selfhref.indexOf(this.data.section) - 1))}/${encodeURIComponent(section)}` : `${startURI}${encodeURIComponent(selfhref.substring(startURI.length))}`;
|
|
106
|
+
const href = new _Href.default(path);
|
|
106
107
|
if (this._entryDate !== null) {
|
|
107
108
|
return href.addParameter(_Constants.TIMEVERSION_FILTER_NAME, this._entryDate);
|
|
108
109
|
}
|
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
// @flow
|
|
2
|
-
import { has } from "../../utils/helpers/objects";
|
|
3
|
-
|
|
4
2
|
import BaseModel from "../base/BaseModel";
|
|
5
3
|
import Href from "../href/Href";
|
|
6
4
|
import LinkModel from "../links/LinkModel";
|
|
@@ -107,22 +105,19 @@ export default class ContentLinkModel
|
|
|
107
105
|
*/
|
|
108
106
|
get encodedHref(): Href {
|
|
109
107
|
const startURI = "/content/";
|
|
110
|
-
|
|
111
108
|
const selfhref = this.data._links.self.href;
|
|
112
|
-
const
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
),
|
|
119
|
-
)
|
|
120
|
-
)
|
|
121
|
-
:
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
)}`,
|
|
125
|
-
);
|
|
109
|
+
const section = this.data.section;
|
|
110
|
+
|
|
111
|
+
const path = section
|
|
112
|
+
? `${startURI}${encodeURIComponent(
|
|
113
|
+
selfhref.substring(
|
|
114
|
+
startURI.length,
|
|
115
|
+
selfhref.indexOf(this.data.section) - 1,
|
|
116
|
+
),
|
|
117
|
+
)}/${encodeURIComponent(section)}`
|
|
118
|
+
: `${startURI}${encodeURIComponent(selfhref.substring(startURI.length))}`;
|
|
119
|
+
|
|
120
|
+
const href = new Href(path);
|
|
126
121
|
|
|
127
122
|
if (this._entryDate !== null) {
|
|
128
123
|
return href.addParameter(TIMEVERSION_FILTER_NAME, this._entryDate);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContentLinkModel.js","names":["
|
|
1
|
+
{"version":3,"file":"ContentLinkModel.js","names":["_BaseModel","_interopRequireDefault","require","_Href","_LinkModel","_ContentTypeModel","_Constants","_LinkCollection","ContentLinkModel","BaseModel","constructor","data","entryDate","arguments","length","undefined","_defineProperty2","default","_entryDate","getInitialChildModelLinks","contentTypeLink","isCacheable","setChildModels","models","href","contentTypeModel","_find","call","model","selfhref","equalsWithParameters","type","contentType","_contentType","ContentTypeModel","key","getData","label","sourceLabel","encodedHref","startURI","_links","self","section","path","encodeURIComponent","substring","indexOf","Href","addParameter","TIMEVERSION_FILTER_NAME","links","LinkCollection","Array","isArray","selflink","getLinkByKey","Error","subSectionID","hash","contentTypeHref","items","_items","exports"],"sources":["../../../src/models/content/ContentLinkModel.js"],"sourcesContent":["// @flow\nimport BaseModel from \"../base/BaseModel\";\nimport Href from \"../href/Href\";\nimport LinkModel from \"../links/LinkModel\";\nimport ContentTypeModel from \"./ContentTypeModel\";\nimport { TIMEVERSION_FILTER_NAME } from \"../../constants/Constants\";\n\nimport LinkCollection from \"../links/LinkCollection\";\n\nimport type { ModularUIModel, IModelWithChildModels } from \"../types\";\n\n/**\n * Link to a concept\n */\nexport default class ContentLinkModel\n extends BaseModel\n implements IModelWithChildModels\n{\n _links: ?LinkCollection;\n _entryDate: ?ISO_DATE;\n _contentType: ContentTypeModel | null = null;\n _items: Array<ContentLinkModel>;\n\n /**\n */\n constructor(data: Object, entryDate: ?ISO_DATE = null) {\n super(data, {});\n\n this._entryDate = entryDate;\n }\n\n /**\n */\n // $FlowFixMe[method-unbinding]\n getInitialChildModelLinks(): Array<LinkModel> {\n if (this.contentTypeLink) {\n this.contentTypeLink.isCacheable = true;\n return [this.contentTypeLink];\n }\n\n return [];\n }\n\n /**\n */\n // $FlowFixMe[method-unbinding]\n setChildModels(models: Array<ModularUIModel>) {\n if (this.contentTypeLink) {\n const href = this.contentTypeLink.href;\n const contentTypeModel = models.find((model) =>\n model.selfhref.equalsWithParameters(href),\n );\n\n if (contentTypeModel?.type === \"ContentType\") {\n this.contentType = contentTypeModel;\n }\n }\n }\n\n /**\n * Retrieve content type\n */\n get contentType(): ?ContentTypeModel | null {\n return this._contentType;\n }\n\n /**\n * Set concept type\n */\n set contentType(contentType: ?ModularUIModel) {\n this._contentType =\n contentType instanceof ContentTypeModel ? contentType : null;\n }\n\n /**\n */\n set entryDate(entryDate: ISO_DATE) {\n this._entryDate = entryDate;\n }\n\n /**\n * Retrieve key\n */\n get key(): string {\n return this.getData(\"_id\", \"\");\n }\n\n /**\n * Retrieve label\n */\n get label(): string {\n return this.getData(\"label\", \"\");\n }\n\n /**\n * Retrieve the label of the source a link to a section belongs to\n */\n get sourceLabel(): string | null {\n return this.getData(\"sourceLabel\");\n }\n\n /**\n * Encode the content-identifier of the path to the content resource.\n * This makes it a single uri part, which can be used on routes to make nested routes\n */\n get encodedHref(): Href {\n const startURI = \"/content/\";\n const selfhref = this.data._links.self.href;\n const section = this.data.section;\n\n const path = section\n ? `${startURI}${encodeURIComponent(\n selfhref.substring(\n startURI.length,\n selfhref.indexOf(this.data.section) - 1,\n ),\n )}/${encodeURIComponent(section)}`\n : `${startURI}${encodeURIComponent(selfhref.substring(startURI.length))}`;\n\n const href = new Href(path);\n\n if (this._entryDate !== null) {\n return href.addParameter(TIMEVERSION_FILTER_NAME, this._entryDate);\n }\n\n return href;\n }\n\n /**\n * Getting the links of the resource\n */\n get links(): LinkCollection {\n if (!this._links) {\n this._links = new LinkCollection(\n Array.isArray(this.data._links)\n ? this.data._links[0]\n : this.data._links,\n );\n }\n\n return this._links;\n }\n\n /**\n * Get self link of model\n */\n get selflink(): LinkModel {\n const selflink = this.links.getLinkByKey(\"self\");\n\n if (selflink === null) {\n throw new Error(\n `Could not find self link for ${\n this.key === null ? \"unknown\" : this.key\n }`,\n );\n }\n\n return selflink;\n }\n\n /**\n * Self href of concept\n */\n get selfhref(): Href {\n if (this._entryDate !== null) {\n return this.selflink.href.addParameter(\n TIMEVERSION_FILTER_NAME,\n this._entryDate,\n );\n }\n\n return this.selflink.href;\n }\n\n /**\n */\n get subSectionID(): string {\n return this.selfhref.hash;\n }\n\n /**\n */\n get contentTypeLink(): LinkModel | null {\n return this.links.getLinkByKey(\"contenttype\");\n }\n\n /**\n * Concept type href of concept\n */\n get contentTypeHref(): Href | null {\n if (this.contentTypeLink) {\n return this.contentTypeLink.href;\n }\n\n return null;\n }\n\n /**\n * Children of link model in TOC\n */\n set items(items: Array<ContentLinkModel>) {\n this._items = items;\n }\n\n /**\n */\n get items(): Array<ContentLinkModel> {\n return this._items;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Error.js","names":["_Constants","require","_Settings","_ErrorResponse","_interopRequireDefault","_RouterActions","_Notification","_ProgressIndicator","_SignIn","_Authorization","saveError","error","type","payload","defaultErrorResponseHandler","dispatch","isResourceNotFoundAfterReload","isRemoteServiceException","isUnauthorized","handleUnauthorized","isBlocked","isConcurrentUser","isInvalidUsername","LOGOUT_PATH","getSetting","push","isChangePassword","changePassword","IS_SERVER","setTimeout","showXHRErrorNotification","customErrorResponseHandler","errorResponse","defaultHandler","setCustomErrorResponseHandler","handler","exports","handleError","resetProgress","ErrorResponse"],"sources":["../../../src/redux/actions/Error.js"],"sourcesContent":["// @flow\nimport { IS_SERVER } from \"../../constants/Constants\";\nimport { getSetting } from \"../../constants/Settings\";\n\nimport ErrorResponse from \"../../models/error/ErrorResponse\";\n\nimport { push } from \"../_router/RouterActions\";\nimport { showXHRErrorNotification } from \"./Notification\";\nimport { resetProgress } from \"./ProgressIndicator\";\nimport { changePassword } from \"./SignIn\";\nimport { handleUnauthorized } from \"./Authorization\";\n\nimport type { FetchException } from \"../../exceptions\";\nimport type { Dispatch, SaveErrorAction, ThunkAction } from \"../types\";\n\ntype DefaultErrorResponseHandler = (error: ErrorResponse) => ThunkAction;\ntype CustomErrorResponseHandler = (\n errorResponse: ErrorResponse,\n defaultHandler: DefaultErrorResponseHandler,\n) => ThunkAction;\n\n/**\n */\nconst saveError = (error: ErrorResponse): SaveErrorAction => ({\n type: \"SAVE_ERROR\",\n payload: error,\n});\n\n/**\n */\nconst defaultErrorResponseHandler: DefaultErrorResponseHandler =\n (error: ErrorResponse): ThunkAction =>\n (dispatch: Dispatch) => {\n if (error.isResourceNotFoundAfterReload || error.isRemoteServiceException) {\n return dispatch({ type: \"NO_ACTION\" });\n }\n\n if (error.isUnauthorized) {\n return dispatch(handleUnauthorized(error));\n }\n\n if (error.isBlocked || error.isConcurrentUser || error.isInvalidUsername) {\n const LOGOUT_PATH = getSetting(\"LOGOUT_PATH\", \"/signout\");\n dispatch(push(LOGOUT_PATH));\n }\n\n if (error.isChangePassword) {\n return dispatch(changePassword());\n }\n\n if (IS_SERVER) {\n return dispatch(saveError(error));\n }\n\n setTimeout(() => {\n throw error;\n });\n\n return dispatch(showXHRErrorNotification(error));\n };\n\n/**\n * Standard Custom error response, acts as a proxy and can be overwritten by {@link setCustomErrorResponseHandler}\n */\nlet customErrorResponseHandler: CustomErrorResponseHandler =\n (errorResponse, defaultHandler) => (dispatch: Dispatch) =>\n dispatch(defaultHandler(errorResponse));\n\n/**\n * Set a custom error response handler,\n * can be used when custom functionality is needed on certain (error) response\n * of the modular ui, for example when custom logic is needed when a user is unauthorized<br>\n * It receives an {@link ErrorResponse} and the {@link defaultErrorResponseHandler}\n */\nexport const setCustomErrorResponseHandler = (\n handler: CustomErrorResponseHandler,\n) => {\n customErrorResponseHandler = handler;\n};\n\n/**\n * Handle errors by sending an error notification message\n */\nexport const handleError =\n (error: Error | FetchException): ThunkAction =>\n (dispatch: Dispatch) => {\n dispatch(resetProgress());\n\n const errorResponse = new ErrorResponse(error);\n\n return dispatch(\n customErrorResponseHandler(errorResponse, defaultErrorResponseHandler),\n );\n };\n"],"mappings":";;;;;;;AACA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AAEA,IAAAE,cAAA,GAAAC,sBAAA,CAAAH,OAAA;AAEA,IAAAI,cAAA,GAAAJ,OAAA;AACA,IAAAK,aAAA,GAAAL,OAAA;AACA,IAAAM,kBAAA,GAAAN,OAAA;AACA,IAAAO,OAAA,GAAAP,OAAA;AACA,IAAAQ,cAAA,GAAAR,OAAA;AAWA;AACA;AACA,MAAMS,SAAS,GAAIC,KAAoB,KAAuB;EAC5DC,IAAI,EAAE,YAAY;EAClBC,OAAO,EAAEF;AACX,CAAC,CAAC;;AAEF;AACA;AACA,MAAMG,2BAAwD,GAC3DH,KAAoB,IACpBI,QAAkB,IAAK;EACtB,IAAIJ,KAAK,CAACK,6BAA6B,IAAIL,KAAK,CAACM,wBAAwB,EAAE;IACzE,OAAOF,QAAQ,CAAC;MAAEH,IAAI,EAAE;IAAY,CAAC,CAAC;EACxC;EAEA,IAAID,KAAK,CAACO,cAAc,EAAE;IACxB,OAAOH,QAAQ,CAAC,IAAAI,iCAAkB,EAACR,KAAK,CAAC,CAAC;EAC5C;EAEA,IAAIA,KAAK,CAACS,SAAS,IAAIT,KAAK,CAACU,gBAAgB,IAAIV,KAAK,CAACW,iBAAiB,EAAE;IACxE,MAAMC,WAAW,GAAG,IAAAC,oBAAU,EAAC,aAAa,EAAE,UAAU,CAAC;IACzDT,QAAQ,CAAC,IAAAU,mBAAI,EAACF,WAAW,CAAC,CAAC;EAC7B;EAEA,IAAIZ,KAAK,CAACe,gBAAgB,EAAE;IAC1B,OAAOX,QAAQ,CAAC,IAAAY,sBAAc,EAAC,CAAC,CAAC;EACnC;EAEA,IAAIC,oBAAS,EAAE;IACb,OAAOb,QAAQ,CAACL,SAAS,CAACC,KAAK,CAAC,CAAC;EACnC;EAEAkB,UAAU,CAAC,MAAM;IACf,MAAMlB,KAAK;
|
|
1
|
+
{"version":3,"file":"Error.js","names":["_Constants","require","_Settings","_ErrorResponse","_interopRequireDefault","_RouterActions","_Notification","_ProgressIndicator","_SignIn","_Authorization","saveError","error","type","payload","defaultErrorResponseHandler","dispatch","isResourceNotFoundAfterReload","isRemoteServiceException","isUnauthorized","handleUnauthorized","isBlocked","isConcurrentUser","isInvalidUsername","LOGOUT_PATH","getSetting","push","isChangePassword","changePassword","IS_SERVER","setTimeout","showXHRErrorNotification","customErrorResponseHandler","errorResponse","defaultHandler","setCustomErrorResponseHandler","handler","exports","handleError","resetProgress","ErrorResponse"],"sources":["../../../src/redux/actions/Error.js"],"sourcesContent":["// @flow\nimport { IS_SERVER } from \"../../constants/Constants\";\nimport { getSetting } from \"../../constants/Settings\";\n\nimport ErrorResponse from \"../../models/error/ErrorResponse\";\n\nimport { push } from \"../_router/RouterActions\";\nimport { showXHRErrorNotification } from \"./Notification\";\nimport { resetProgress } from \"./ProgressIndicator\";\nimport { changePassword } from \"./SignIn\";\nimport { handleUnauthorized } from \"./Authorization\";\n\nimport type { FetchException } from \"../../exceptions\";\nimport type { Dispatch, SaveErrorAction, ThunkAction } from \"../types\";\n\ntype DefaultErrorResponseHandler = (error: ErrorResponse) => ThunkAction;\ntype CustomErrorResponseHandler = (\n errorResponse: ErrorResponse,\n defaultHandler: DefaultErrorResponseHandler,\n) => ThunkAction;\n\n/**\n */\nconst saveError = (error: ErrorResponse): SaveErrorAction => ({\n type: \"SAVE_ERROR\",\n payload: error,\n});\n\n/**\n */\nconst defaultErrorResponseHandler: DefaultErrorResponseHandler =\n (error: ErrorResponse): ThunkAction =>\n (dispatch: Dispatch) => {\n if (error.isResourceNotFoundAfterReload || error.isRemoteServiceException) {\n return dispatch({ type: \"NO_ACTION\" });\n }\n\n if (error.isUnauthorized) {\n return dispatch(handleUnauthorized(error));\n }\n\n if (error.isBlocked || error.isConcurrentUser || error.isInvalidUsername) {\n const LOGOUT_PATH = getSetting(\"LOGOUT_PATH\", \"/signout\");\n dispatch(push(LOGOUT_PATH));\n }\n\n if (error.isChangePassword) {\n return dispatch(changePassword());\n }\n\n if (IS_SERVER) {\n return dispatch(saveError(error));\n }\n\n setTimeout(() => {\n throw error.error;\n });\n\n return dispatch(showXHRErrorNotification(error));\n };\n\n/**\n * Standard Custom error response, acts as a proxy and can be overwritten by {@link setCustomErrorResponseHandler}\n */\nlet customErrorResponseHandler: CustomErrorResponseHandler =\n (errorResponse, defaultHandler) => (dispatch: Dispatch) =>\n dispatch(defaultHandler(errorResponse));\n\n/**\n * Set a custom error response handler,\n * can be used when custom functionality is needed on certain (error) response\n * of the modular ui, for example when custom logic is needed when a user is unauthorized<br>\n * It receives an {@link ErrorResponse} and the {@link defaultErrorResponseHandler}\n */\nexport const setCustomErrorResponseHandler = (\n handler: CustomErrorResponseHandler,\n) => {\n customErrorResponseHandler = handler;\n};\n\n/**\n * Handle errors by sending an error notification message\n */\nexport const handleError =\n (error: Error | FetchException): ThunkAction =>\n (dispatch: Dispatch) => {\n dispatch(resetProgress());\n\n const errorResponse = new ErrorResponse(error);\n\n return dispatch(\n customErrorResponseHandler(errorResponse, defaultErrorResponseHandler),\n );\n };\n"],"mappings":";;;;;;;AACA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AAEA,IAAAE,cAAA,GAAAC,sBAAA,CAAAH,OAAA;AAEA,IAAAI,cAAA,GAAAJ,OAAA;AACA,IAAAK,aAAA,GAAAL,OAAA;AACA,IAAAM,kBAAA,GAAAN,OAAA;AACA,IAAAO,OAAA,GAAAP,OAAA;AACA,IAAAQ,cAAA,GAAAR,OAAA;AAWA;AACA;AACA,MAAMS,SAAS,GAAIC,KAAoB,KAAuB;EAC5DC,IAAI,EAAE,YAAY;EAClBC,OAAO,EAAEF;AACX,CAAC,CAAC;;AAEF;AACA;AACA,MAAMG,2BAAwD,GAC3DH,KAAoB,IACpBI,QAAkB,IAAK;EACtB,IAAIJ,KAAK,CAACK,6BAA6B,IAAIL,KAAK,CAACM,wBAAwB,EAAE;IACzE,OAAOF,QAAQ,CAAC;MAAEH,IAAI,EAAE;IAAY,CAAC,CAAC;EACxC;EAEA,IAAID,KAAK,CAACO,cAAc,EAAE;IACxB,OAAOH,QAAQ,CAAC,IAAAI,iCAAkB,EAACR,KAAK,CAAC,CAAC;EAC5C;EAEA,IAAIA,KAAK,CAACS,SAAS,IAAIT,KAAK,CAACU,gBAAgB,IAAIV,KAAK,CAACW,iBAAiB,EAAE;IACxE,MAAMC,WAAW,GAAG,IAAAC,oBAAU,EAAC,aAAa,EAAE,UAAU,CAAC;IACzDT,QAAQ,CAAC,IAAAU,mBAAI,EAACF,WAAW,CAAC,CAAC;EAC7B;EAEA,IAAIZ,KAAK,CAACe,gBAAgB,EAAE;IAC1B,OAAOX,QAAQ,CAAC,IAAAY,sBAAc,EAAC,CAAC,CAAC;EACnC;EAEA,IAAIC,oBAAS,EAAE;IACb,OAAOb,QAAQ,CAACL,SAAS,CAACC,KAAK,CAAC,CAAC;EACnC;EAEAkB,UAAU,CAAC,MAAM;IACf,MAAMlB,KAAK,CAACA,KAAK;EACnB,CAAC,CAAC;EAEF,OAAOI,QAAQ,CAAC,IAAAe,sCAAwB,EAACnB,KAAK,CAAC,CAAC;AAClD,CAAC;;AAEH;AACA;AACA;AACA,IAAIoB,0BAAsD,GACxDA,CAACC,aAAa,EAAEC,cAAc,KAAMlB,QAAkB,IACpDA,QAAQ,CAACkB,cAAc,CAACD,aAAa,CAAC,CAAC;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACO,MAAME,6BAA6B,GACxCC,OAAmC,IAChC;EACHJ,0BAA0B,GAAGI,OAAO;AACtC,CAAC;;AAED;AACA;AACA;AAFAC,OAAA,CAAAF,6BAAA,GAAAA,6BAAA;AAGO,MAAMG,WAAW,GACrB1B,KAA6B,IAC7BI,QAAkB,IAAK;EACtBA,QAAQ,CAAC,IAAAuB,gCAAa,EAAC,CAAC,CAAC;EAEzB,MAAMN,aAAa,GAAG,IAAIO,sBAAa,CAAC5B,KAAK,CAAC;EAE9C,OAAOI,QAAQ,CACbgB,0BAA0B,CAACC,aAAa,EAAElB,2BAA2B,CACvE,CAAC;AACH,CAAC;AAACsB,OAAA,CAAAC,WAAA,GAAAA,WAAA","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@beinformed/ui",
|
|
3
|
-
"version": "1.43.
|
|
3
|
+
"version": "1.43.3",
|
|
4
4
|
"description": "Toolbox for be informed javascript layouts",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
6
6
|
"bugs": "http://support.beinformed.com",
|
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
"dependencies": {
|
|
85
85
|
"@babel/runtime-corejs3": "^7.24.0",
|
|
86
86
|
"big.js": "^6.2.1",
|
|
87
|
-
"date-fns": "^3.
|
|
87
|
+
"date-fns": "^3.4.0",
|
|
88
88
|
"deepmerge": "^4.3.1",
|
|
89
89
|
"dequal": "^2.0.3",
|
|
90
90
|
"file-size": "^1.0.0",
|
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
// @flow
|
|
2
|
-
import { has } from "../../utils/helpers/objects";
|
|
3
|
-
|
|
4
2
|
import BaseModel from "../base/BaseModel";
|
|
5
3
|
import Href from "../href/Href";
|
|
6
4
|
import LinkModel from "../links/LinkModel";
|
|
@@ -107,22 +105,19 @@ export default class ContentLinkModel
|
|
|
107
105
|
*/
|
|
108
106
|
get encodedHref(): Href {
|
|
109
107
|
const startURI = "/content/";
|
|
110
|
-
|
|
111
108
|
const selfhref = this.data._links.self.href;
|
|
112
|
-
const
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
),
|
|
119
|
-
)
|
|
120
|
-
)
|
|
121
|
-
:
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
)}`,
|
|
125
|
-
);
|
|
109
|
+
const section = this.data.section;
|
|
110
|
+
|
|
111
|
+
const path = section
|
|
112
|
+
? `${startURI}${encodeURIComponent(
|
|
113
|
+
selfhref.substring(
|
|
114
|
+
startURI.length,
|
|
115
|
+
selfhref.indexOf(this.data.section) - 1,
|
|
116
|
+
),
|
|
117
|
+
)}/${encodeURIComponent(section)}`
|
|
118
|
+
: `${startURI}${encodeURIComponent(selfhref.substring(startURI.length))}`;
|
|
119
|
+
|
|
120
|
+
const href = new Href(path);
|
|
126
121
|
|
|
127
122
|
if (this._entryDate !== null) {
|
|
128
123
|
return href.addParameter(TIMEVERSION_FILTER_NAME, this._entryDate);
|