{"version":3,"sources":["components/JsonEditor.tsx","components/Dialog.jsx","components/widgets/Tab.module.css","images/person.svg","images/gear.svg","components/Header.jsx","components/Home.module.css","components/ConfigurationTopBar.module.css","components/ui-primitives/button.tsx","helpers/widget.ts","components/widgets/Tab.tsx","components/Header.module.css","components/Users.module.css","components/widgets/Table2.module.css","components/widgets/SearchAutocomplete.module.css","helpers/AfterJS.js","components/ui-primitives/popover.tsx","components/FontList.tsx","model/project.ts","model/user.ts","api/login.ts","images/wistor-logo-white-with-text.svg","components/Footer.jsx","components/widgets/Slider.module.css","components/login/LoginPageLayout.module.css","redux/projects.js","components/JsonEditor.module.css","components/widgets/bb/BBPicture.module.css","helpers/layout.ts","components/ui-primitives/select.tsx","redux/project.js","components/basic/Button.tsx","components/basic/Form.module.css","components/widgets/SelectBox.module.css","components/widgets/SplitLayout.module.css","components/ui-primitives/label.tsx","redux/users.js","components/mui/resolutions.module.css","components/FormField.module.css","helpers/utils.js","helpers/DeferredPromise.ts","helpers/SparqlManager.ts","components/basic/Button.module.css","components/widgets/RadioBox.module.css","helpers/PublishUtils.ts","images/plus.svg","images/cross.svg","components/Loader.tsx","components/Widget.jsx","components/WidgetWrapper.tsx","components/mui/LargeTooltip.tsx","components/ui-primitives/command.tsx","components/ui-primitives/search-select.tsx","components/ui-primitives/tabs.tsx","components/ui-primitives/switch.tsx","components/ui-primitives/input-with-suggestions.tsx","utils/parse-sparql-params.ts","components/ui-primitives/alert.tsx","utils/typescript.ts","components/widgets/TablePlusPlus/components/CustomConfiguration.tsx","components/FormField.tsx","components/widgets/bb/BBPropertyPanelDescriptor.js","components/widgets/bb/BBCheckboxTreeDescriptor.js","components/ui-primitives/pre-span.tsx","components/widgets/TableDescriptor.js","components/widgets/TableCells.jsx","components/widgets/TreeDescriptor.js","components/widgets/TreeD3Descriptor.js","components/widgets/SelectBox.jsx","components/widgets/Slider.jsx","components/widgets/SearchAutocomplete.jsx","components/widgets/SplitLayout.jsx","components/widgets/SplitLayoutTestDescriptor.js","components/widgets/Yasgui.jsx","components/widgets/bb/BBMap.js","components/widgets/bb/BBMapExperimental.js","components/widgets/bb/BBMultiMap.js","components/widgets/bb/BBTreeTable.js","components/widgets/bb/BBYasgui.js","components/widgets/bb/BBYasguiLatest.js","components/widgets/bb/BBYasr.js","components/widgets/bb/BBYasguiNotebook.js","components/widgets/bb/BBNotebook.js","components/widgets/bb/BBKGApiVizWidget.js","components/widgets/bb/BBVoyager.js","components/widgets/bb/BBAccordionDescriptor.js","components/widgets/bb/BBPicture.js","components/widgets/bb/BBHTML.js","components/widgets/bb/editor/BBDFormDescriptor.jsx","components/widgets/bb/BBSideMenuConfigs.ts","components/widgets/bb/BBSideMenuDescriptor.js","components/widgets/bb/BBEChartDescriptor.js","components/widgets/bb/BBBoorkern.js","components/widgets/bb/rules/StartRuleButtonDescriptor.ts","components/widgets/bb/BBLinkButtons.js","components/widgets/bb/BBStructuredTextDescriptor.js","components/widgets/bb/kvk/BBKVKProductTemplateDescriptor.js","components/widgets/bb/BBBackMenu.js","components/widgets/bb/BBSimplePushButtonDescriptor.js","components/widgets/bb/BBVenn.js","components/widgets/bb/BBForm.js","components/widgets/bb/BBUploadDescriptor.js","components/widgets/bb/BBNOML.js","components/widgets/bb/rotterdam/ButtonPopupDescriptor.js","components/widgets/bb/BBRDFViewer.js","components/widgets/bb/BBCesium.js","components/widgets/bb/BBSVG.js","components/widgets/bb/venr/BBWegselectorDescriptor.js","components/widgets/bb/BBParameterLinkEmptyWidget.js","components/widgets/SequencePaths.jsx","components/widgets/bb/BBIFCJSViewerDescriptor.js","components/widgets/bb/ifc/BBThreeJSViewerDescriptor.js","components/widgets/bb/BBSparnaturalDescriptor.js","components/widgets/bb/deck/NebulaDescriptor.js","hooks/use-debounce.ts","components/widgets/TextInput.tsx","components/widgets/DynamicFilter/dynamicFilterWidgetDescription.tsx","components/widgets/ExcelWidgetDescriptor.tsx","components/ToggleSwitch.tsx","components/widgets/ToggleWidget.tsx","components/widgets/jobStatusWidgetDescription.ts","components/widgets/VideoPlayer/WidgetDescription.tsx","components/widgets/bb/BBLibremapDescriptor.js","components/widgets/bb/BBMermaidDescriptor.js","components/WidgetCategory.jsx","components/widgets/ListDescriptor.js","components/widgets/RadioBox.jsx","components/widgets/TablePlusPlus/config-options.tsx","components/widgets/TablePlusPlus/tablePlusPlusWidgetDescription.tsx","components/widgets/ifcjs/IFCJSViewerV3Descriptor.js","components/widgets/bb/BBIfcViewerNextGen.js","components/widgets/bb/BBTableDescriptor.js","components/widgets/bb/BBSVGEditorDescriptor.js","components/widgets/bb/BBGanttChartDescriptor.js","components/widgets/bb/prime/BBComponentDescriptor.js","components/widgets/bb/prime/BBMenubarDescriptor.js","components/widgets/bb/experimental/BBPythonDescriptor.js","components/widgets/ImageGallery/ImageGalleryWidgetDescription.tsx","components/widgets/bb/experimental/BBMJOPWidgetDescriptor.js","components/widgets/bb/experimental/BBPythonServerPageDescriptor.js","components/widgets/index.js","components/WidgetConfiguration.tsx","components/Area.jsx","helpers/run-start-rule.ts","hooks/use-dialog.tsx","helpers/styling.ts","components/default-widget-config.ts","redux/current-viewer.ts","redux/debugging.ts","images/info.svg","components/AutoHyperlink.jsx","components/SPARQLEditor.tsx","components/HelpDialog.tsx","helpers/user-input-messenger.ts","components/Dialog.module.css","components/Viewer.jsx","components/widgets/TableCells.module.css","components/widgets/Yasgui.module.css","components/widgets/bb/BBHTML.module.css","components/widgets/SequencePaths.module.css","components/widgets/bb/Button.module.css","components/ui-primitives/dialog.tsx","components/Notifications.module.css","components/WidgetWrapper.module.css","components/widgets/bb/BBIFrame.js","components/widgets/Table.jsx","components/ToggleSwitch.module.css","components/ui-primitives/input.tsx","components/FormGroup.tsx","redux/pubsub.ts","utils/uri.ts","images/gear-white.svg","images/gear-blue.svg","components/sortable/sortable-item.tsx","components/widgets/bb/BBVis.js","components/widgets/bb/kvk/BBKVKFlexibleTextWidget.js","components/BackButton.module.css","components/DeleteAppConfigButton.module.css","components/basic/Input.module.css","helpers/sparql.js","components/Notification.jsx","components/Loader.module.css","components/WidgetConfiguration.module.css","components/widgets/Table2.jsx","components/widgets/bb/BBIFCViewer.js","components/widgets/ToggleWidget.module.css","components/ViewerContextUtils.jsx","components/AppVariables.tsx","components/SparqlTriggerExecutor.tsx","components/TriggerPopup.tsx","components/ConfigurationTopBar.tsx","components/widgets/Icon.ts","redux/login.ts","redux/rootReducer.ts","redux/event.js","store.ts","helpers/url.ts","components/Area.module.css","components/widgets/TablePlusPlus/config-schema.ts","components/widgets/bb/bbutil.js","images/arrow-back.svg","images/add.svg","images/wistor-mark-color.svg","components/Home.jsx","components/BackButton.jsx","components/Users.jsx","components/DeleteAppConfigButton.tsx","api/delete-app-config.ts","api/utils.ts","components/Project.jsx","components/login/LoginPageLayout.tsx","components/login/Login.tsx","api/repo-login.ts","components/login/RepoLogin.tsx","components/ProtectedRoute.tsx","App.jsx","serviceWorker.js","components/mui/theme.tsx","index.js","components/Project.module.css","components/widgets/Table.module.css","components/Footer.module.css","helpers/resolve-template-string.ts","components/Viewer.module.css","images/spinner.gif","components/Spinner.jsx","components/TriggerPopup.module.css","helpers/LoginHelper.js","helpers/Command.js"],"names":["JsonEditor","props","valueAsString","JSON","stringify","value","useState","draftValue","setDraftValue","JsonTextEditor","name","exportFileName","onValueChange","valueString","parse","e","inputRef","useRef","expanded","setExpanded","validationStatus","setValidationStatus","copyValueToClipboard","navigator","clipboard","writeText","console","error","alert","pasteValueFromClipboard","readText","text","className","style","wrapper","mode","theme","fontSize","width","height","fontFamily","fontWeight","readOnly","readonly","onChange","String","bar","title","type","onClick","checkJson","clsx","ok","icon","faCheck","faExclamation","separator","formatted","formatJson","blob","Blob","url","URL","createObjectURL","a","document","createElement","href","download","click","revokeObjectURL","exportValueAsJson","faDownload","current","ref","accept","display","event","file","target","files","reader","FileReader","onload","result","readAsText","faUpload","faCopy","faPaste","prevExpanded","faDownLeftAndUpRightToCenter","faUpRightAndDownLeftFromCenter","Dialog","children","onClose","styles","overlay","frame","stopPropagation","body","module","exports","Header","state","collapsed","logoutRepoOrPlatform","bbsparqlendpoint","Command","sendCommand","window","location","reload","log","logout","login","history","push","pathname","onClickManageUsers","mouseOver","mouseOut","loginState","this","logoutbutton","showLogoutButton","isLoggingIn","isLoggedIn","showLoginButton","noLoginButton","Grow","direction","appear","timeout","in","modern","main","maxWidth","pageWidth","src","logoURL","alt","maxHeight","marginRight","centerPart","float","alignTitle","onInfoClick","infoIcon","AutoHyperlink","subtitle","auth","person","nameContainer","lineHeight","user","role","color","padding","Component","withRouter","connect","buttonVariants","cva","variants","variant","default","destructive","outline","secondary","ghost","link","size","sm","lg","defaultVariants","Button","React","asChild","Comp","Slot","mergeClasses","undefined","displayName","getSubscription","previousState","currentState","topic","transform","isValid","hasChanged","previous","transformation","success","isValidIndex","x","str","number","Number","int","parseInt","isNotInt","isNaN","isString","interpolateSubscriptions","widget","strTemplate","outputFormat","interpolated","PublishUtils","processStringForParameters","toLowerCase","Error","APPEARANCE","Tab","selectedIndex","hideTabs","areas","id","tabId","onTabClick","index","tabSelectionSubscription","publish","setState","updateTabs","prevProps","hideTabsTopic","tabIndexTopic","tabIndex","pubsub","newSelectedIndex","newHideTabs","split","tabs","length","hideTabIDs","tabHideId","firstNonHiddenIndex","getFirstNonHiddenTab","includes","viewMode","panelstyle","appearance","TraditionalTabs","icons","inactiveTabsOnlyIcons","Boolean","map","tab","areaConfig","selected","withinSelectedTab","areaContainer","key","config","carouselClickNavigation","navigateToNextTab","CarouselTabs","withButtons","getDescription","tabDescription","registeredTabComponents","component","label","variables","options","topicValueInterpolationEnabled","tabText","at","isSelected","hideTabText","carouselTabsContainer","carouselButton","prevIcon","tabLabel","i","carouselItem","itemIcon","nextIcon","hideTabIds","AfterJS","jsAfterSelection","js","eval","parameter","pred","pv","publishVariable","sparql","top","MySparql","select","arg","results","bindings","Popover","PopoverPrimitive","PopoverTrigger","PopoverClose","PopoverContent","align","sideOffset","FontListButton","show","useDialog","preventDefault","HelpDialog","FontList","AVAILABLE_FONTS","font","ProjectSchema","z","object","string","path","createdAt","UserSchema","email","project","optional","union","literal","LS_TOKEN_KEY","credentials","axios","post","response","token","data","localStorage","setItem","me","removeItem","AxiosError","reason","ERR_INVALID_RESPONSE_WITH_SUGGESTION","getCurrentUser","getItem","get","headers","Authorization","withCredentials","Footer","keuze","er","logo","marginTop","marginBottom","normaal","names","waternet2","commentMessage","kvk","buildingbits","wistor","mayer","fetchProjects","cb","dispatch","getState","projects","loaded","method","createProject","values","initialState","loading","items","handleProjects","action","LAYOUT_NAME","CUSTOM","ORIGINAL","LAYOUT_CONFIG","showFooter","inflateLayout","viewer","layoutName","layout","Select","SelectPrimitive","SelectGroup","SelectValue","SelectTrigger","cn","SelectScrollUpButton","SelectScrollDownButton","SelectContent","position","SelectLabel","SelectItem","FETCH_VIEWER_SUCCESS","FETCH_PROJECT_SUCCESS","SAVE_VIEWER_SUCCESS","DELETE_APP_SUCCESS","SET_LAYOUT_NAME","viewers","handleProject","filter","v","deleted","item","otherProps","ButtonLink","labelVariants","Label","LabelPrimitive","fetchUsers","users","createUser","handleUser","not","fn","isEmptyObject","obj","Object","keys","getPrototypeOf","prototype","CancelToken","getSparqlFunction","ss","getAbsoluteRepoUrl","repoURL","getUrl","query","errorRV","encodeURIComponent","defaults","cancelToken","c","cancel","then","call","catch","createSparqlFunction2","Symbol","toStringTag","DeferredPromise","promise","resolve","reject","Promise","bind","ErrorNeedAuth","instances","Map","cache","SparqlTemplate","sparqlEndpoint","templateId","lastRequest","cancelActiveRequest","set","isLatest","has","cachedResults","setTimeout","URLSearchParams","maxContentLength","Infinity","maxBodyLength","Accept","match","waitFor","shouldCacheQuery","isAxiosError","status","ms","timestamp","varNamesCommaSeparated","setTimeStampParameter","timestampParameters","debug","Date","now","json","parsedObject","rule","ruleTagAfterSubmit","runStartRule","parameters","resetValues","resetParametersRaw","resetParameters","resetValue","promises","resetParameter","currentValue","setTimeoutAsync","all","replace","TEMPLATE_PLACEHOLDER_REGEX","resolveTemplateString","arg2","resetDataProps","button","multipleselectparametertype","list","record","forEach","getMultiplePropValueAsSingleValue","komma","pre","end","kommaT","getEmptyMultiplePropValueAsSingleValue","n","multipleSelectParameterType","multiplePropValue","csvuri","prefix","postfix","csvstring","valuestring","valueuri","trim","join","after","lookingFor","parseSymbolIntoParsed","parsed","char","symbol","expectedChar","parsedLength","initialParserState","Array","from","reduce","currentEscapeChar","errorMessage","message","callback","delay","resetUri","Loader","fallback","LoadingOverlay","active","css","Spinner","require","Widget","lastQuery","resolveTemplateVariableInQuery","changedPublishProps","loadData","NoPlaceholderValueError","publishMultipleValues","prop_value","prop","setLoading","voteForUserActionsDisabledWhenLoading","voteForUserActionsDisabled","setLoadingFromWidget","sendNotification","msg","toast","resolveTemplateVariableInQueryDebounce","debounce","useLoadingWidget","createSparqlFunction","endpoint","getCgiUrl","repoName","localRepoURL","widgetId","startsWith","modus","host","encodedQuery","r","sparqlQuery","codes","nquery","codeQuery","evalcode","evalCode2","Function","originalQuery","countRetries","runJSInQuery","fetch","CanceledError","reauth","goToLoginPage","definition","find","variable","isEqual","propsWithoutChildren","showLoadingOverlay","cloneElement","closeDialog2","closeDialog","WidgetWrapper","userActionsDisabled","clickable","LargeTooltip","styled","arrow","classes","popper","tooltipClasses","tooltip","textTransform","CommandPrimitive","CommandInput","Input","CommandList","List","CommandEmpty","Empty","CommandGroup","Group","Separator","CommandItem","Item","SearchSelect","open","setOpen","onOpenChange","buttonClassName","option","placeholder","contentClassName","zIndex","noResultsLabel","keywords","onSelect","Tabs","TabsPrimitive","TabsList","TabsTrigger","TabsTriggerAlt","TabsContent","Switch","InputWithSuggestions","input","setInput","suggestionsWithCurrentInput","suggestions","some","suggestion","noSuggestionsPlaceholder","SwitchPrimitives","parseSparqlParams","params","inSelect","inParentheses","lastAliasParam","insideAlias","tokens","toUpperCase","param","alertVariants","Alert","AlertDescription","mapRecordToList","mappedValue","forEachEntry","TablePPCustomConfigView","sparqlVarNames","setSparqlVarNames","selectVarNames","setSelectVarNames","currentQuery","setCurrentQuery","customConfig","columnConfigs","setTabId","dataYasqe","useSelector","activeYasqes","currentViewer","useEffect","updateSPARQLVarNames","getValue","getVariablesFromQuery","s","slice","getValueWithoutComments","on","stateSchema","superRefine","ctx","refineRowEditorCombinations","safeParse","setConfigFeedback","InvalidCombinationReports","parsedError","validateConfig","y","reasonablyClickableSensors","useSensors","useSensor","PointerSensor","activationConstraint","distance","isLinked","column","isActionColumn","actionColumnConfigSchema","updateConfig","produce","updateColumnPro","update","draft","colIdx","findIndex","updateColumn","targetColumn","updateColumnEditablePro","editable","getDefaultEditableColumnConfig","dataVarNames","dataSelectVarNames","unlinkedVarNames","varName","unlinkedSelectVarNames","ToggleInput","checked","rowEditor","enabled","onCheckedChange","getDefaultRowEditorConfig","TextInput","defaultValue","graph","Tooltip","disabled","newColumns","filterable","sortable","newColumn","createDefaultActionColumnConfig","sensors","onDragEnd","over","activeId","overId","oldIdx","newIdx","arrayMove","reorder","onPointerDown","onMouseDown","onFocus","parseColumn","tabsContentCss","dataColumn","actionColumn","TextInputWithSuggestions","publishTopic","withInterpolation","subject","predicate","SelectionInput","objectType","toObjectTypeLabel","componentType","toComponentTypeLabel","whenEmptyField","toWhenEmptyFieldOptionLabel","parsedColumn","isDataColumn","issues","issue","InvalidFieldMessage","zodIssue","targetId","replaceColumn","fieldErrors","flatten","messages","singleFieldErrorCount","CUSTOM_COMBINATION_PATH","m","unshift","keyOrIndex","code","LabelWithHelp","whiteSpace","gap","flexGrow","helpComponent","FormField","FormGroup","onBlur","newValue","cssFix","cursor","check","DEFAULT_TABLEPP_CUSTOM_CONFIG","anyProps","BBPropertyPanelDescriptor","lazy","defaultQuery","getTimestampParametersDef","BBDCheckboxTreeDescriptor","PreSpan","unicodeBidi","TableDescriptor","category","description","QueryHelp","getResetValueDef","rel","TableCells","res","endsWith","isArray","re","sort","b","localeCompare","restructureResponse","rowsHash","rows","headersHash","nitem","header","row","isFirstItemBold","firstItemBold","headVar","rindex","hindex","TreeDescriptor","getMultipleValueFormatOptions","TreeD3Descriptor","SelectBox","value2","value3","getAttribute","publishVariable2","toString","publishVariable3","preSelect","preSelectFirstItem","head","vars","keyURI","keyLabel","headVars","stylePanel","stylePrimaryAction","colorPrimaryAction","extrastyle","round","extra","Slider","sliderTouched","onmouseup","onChangeThrottle","throttle","newRange","defineMaxMinValue","oldRange","maxValue","minValue","Math","max","min","startMin","publishStartValue","alternateProps","step","tick","container","rangeValue","slider","onMouseUp","SearchAutocomplete","searchValue","validItems","showPopup","itemsRef","createRef","handleKeyPress","selectedItem","objectKey","objectURIKey","scrollToSelectedItem","itemsStartingWithSearchQuery","itemsOnlyContainingSearchQuery","emptyEvent","nullSelectionResetVariable","resetPublishVariable","selectVariable","sv","selectedProp","requestAnimationFrame","querySelector","element","cTop","scrollTop","cBottom","clientHeight","eTop","offsetTop","eBottom","isInView","scrollIntoView","block","objectURI","ind","indexOf","Icon","l1","l2","l3","renderLabel","noResults","ee","mainStyle","alignItems","cssEscape","textbefore","inputContainer","headertxt","placeholderText","onKeyDown","renderValidItems","SplitLayout","firstTime","areaSizes","useFlexboxForAreaSizes","extraClassNames","overflowHidden","disableScrollbars","areaSize","originalAreaSize","flex","fixedSize","test","heightOrWidth","minimize","substr","toLocaleUpperCase","hidden","disableFlexbox","SplitLayoutTestDescriptor","Yasgui","onRunClick","yas","textArea","yasgui","Yasqe","setValue","err","buttonContainer","minWidth","tableContainer","renderData","BBMap","bbFolderName","selectedUri","scrolling","noEvents","usesParameters","getJSScriptAfterSelectionChange","BBIFrame","BBMapExperimental","experimental","BBMultiMap","setSelectedUris","selectedUris","getListAsSingleValue","sendSelectedUrisToIframe","iframeRef","contentWindow","postMessage","subscribeVariable","prevState","newSelectedUris","parseMultiplePropValue","BBTreeTable","iface","selectUri","BBYasgui","BBYasguiLatest","BBYasr","BBYasguiNotebook","BBNotebook","BBKGApiVizWidget","ar","createVizJSON","BBVoyager","BBAccordionDescriptor","BBPicture","encodedData","pictureBaseEncoded","BBHTML","html","htmlgeenresultaat","html2","html3","cls","fullwindow","dangerouslySetInnerHTML","__html","BBDFormDescriptor","sideMenuConfigs","BBSideMenuDescriptor","BBEChartDescriptor","BBBoorkern","updateMe","StartRuleButtonDescriptor","BBLinkButtons","buttonFontSize","buttonFontFamily","buttonStyles","buttonsContainer","customStyling","buttonBorderRadius","textColor","bgColor","marginBetweenButtons","buttonContainerPadding","projectStyles","labels","CustomStyleButton","links","openLinkInSameTab","openLinksInTheSameTab","beginIcon","beginIcons","endIcon","endIcons","hasButtonShadow","OriginalButton","textDecoration","titleText","margin","startIcon","BBStructuredTextDescriptor","BBKVKProductTemplateDescriptor","BBBackMenu","anchorEl","selections","handleClickBack","rValue","pop","changeSelectedTabs","t","getTabId","sel","handleClose","o","IconButton","BBSimplePushButtonDescriptor","BBVenn","BBForm","BBUploadDescriptor","BBNOML","ButtonPopupDescriptor","BBRDFViewer","BBCesium","BBSVG","BBDWegselectorDescriptor","BBParameterLinkEmptyWidget","uri","par","publishParameter","ex","WIDGET_VARIABLES","SequencePaths","sequences","previousData","render","sequence","entry","Fragment","iconName","pathSegment","componentDidUpdate","makeHashMaps","rowByUri","rowsByParentUri","parentUri","flatMap","getSequences","parent","sequenceRows","topicOnClick","BBIFCJSViewerDescriptor","BBSparnaturalDescriptor","NebulaDescriptor","useDebounce","onTimeout","debounceTime","debounceOn","timerRef","clearTimeout","_FormGroup","_Input","_Label","DEFAULT","DEBOUNCE_TIME","WIDTH","textInputWidgetDescription","publishText","topicToPublish","resolvedText2","setResolvedText","setText","parsedDebounceTime","debounceTimeInSeconds","initialValue","initialResolvedValue","inputParameter","resolvedText","rt","marginLeft","hiddenvalue","dynamicFilterWidgetDescription","excelWidgetDescription","ToggleSwitch","isToggled","toggleWidgetDescription","iconImage","handleClick","disabledIconColor","disabledBgColor","enabledIconColor","enabledBgColor","iconButton","jobStatusWidgetDescription","configOptions","videoPlayerDescription","BBLibremapDescriptor","BBPMermaidDescriptor","WidgetCategory","basic","widget2D","widget3D","graphic","edit","other","ListDescriptor","RadioBox","publishVariableLabel","restructureOptions","org","radioContainerHor","verticalAlign","paddingRight","paddingLeft","radioContainerVer","horizontal","renderOptionsHorizontal","renderOptionsVertical","example","uuidv4","TablePlusPlusDescription","IFCJSViewerV3Descriptor","UploadConversionJsonHelp","getRunRuleParametersDef","UPLOADCONVERSIONJSON_DEFAULT","UPLOADCONVERSIONJSON_EVERYTHING","UPLOADCONVERSIONJSON_PSETS","UPLOADCONVERSIONJSON_BIMLEGAL","BBIfcViewerNextGen","BBTableDescriptor","BBSVGEditorDescriptor","BBMenubarDescriptor","BBMPythonDescriptor","imageGalleryWidgetDescription","BBMJOPWidgetDescriptor","BBMPythonServerPageDescriptor","widgetDefinitions","BBSideMenu","SplitLayoutTest","BBAccordion","BBPythonServerPageDescriptor","BBComponentDescriptor","BBGanttChartDescriptor","BBEChart","BBVis","RadioBoxDescriptor","Tree","BBCheckboxTree","BBPropertyPanel","TreeD3","Table","Table2","BBSimplePushButton","BBIFCViewer","BBIFCJSViewer","BBThreeJSViewer","BBDForm","BBMermaidDescriptor","BBKVKProductTemplate","BBKVKFlexibleTextWidget","BBStructuredText","BBUpload","ButtonPopup","StartRuleButton","BBSparnatural","widgetDefinitionsSorted","WidgetConfiguration","waitingToSaveAndClose","feedback","warning","configInput","configRendered","configOriginal","saveConfigRendered","close","delayedUpdateEnabled","updateConfigField","layoutConfig","original","configWithTabs","childConfigOfSameType","area","DEFAULT_WIDGET_CONFIG","general","defaultConfig","mutateWidgetTypeWithDefaults","setConfigToRender","widgetDefinition","w","wd","panelstyleExtra","titleMenubar","infoMenubar","tag","syncWithUserActionsDisabled","shouldApplyBorderRadius","finalTopLeftBorderRadius","finalTopRightBorderRadius","finalBottomLeftBorderRadius","finalBottomRightBorderRadius","hiddenwhenparametersareempty","textAlign","widgetName","Area","dialogVisible","onInsertLayout","confirm","onDeleteWidget","onChildChange","newConfig","onShowPopupInfo","popupInfoVisible","infoPopupClose","openConfigurationWindow","closeConfigurationWindow","handleVoteForUserActionsDisabled","voterId","uniqueId","hasVotedForUserActionsDisabled","store","votersForGlobalUserActionsDisabled","widgetUserActionsDisabled","parameterValues","save","sparqlErrorMessage","parseUrlProperties","withTopicValues","menubar","titleMenuBar","removeUnresolvedParametersFromString","queryDef","extraStyling1","extraStyling2","extraStyling3","extraStyling4","sts","displayFlex","outerAreaContainerDisplayFlex","infoMenubarb","hidden2","hids2","hid2","visibilityState","visibility","outerAreaContainer","zeroBorderRadiusWidget","areaBorderStyle","areaBorderRadius","hoverToEdit","hoverIndicator","placement","editArea","insertIcon","gearBlue","gearWhite","editIcon","deleteIcon","menubartxt","renderWidget","widgetDefinitionVariables","isUserActionsDisabled","ruleTagOrUriTemplate","parametersJson","additionalTemplateVariables","dict","resolvedRule","resolveTemplateStringAndLogErrors","resolvedParameters","isValidUri","ruleRule","runRulesWithTag","root","getElementById","setAttribute","appendChild","getRoot","ReactDOM","remove","args","twMerge","ToggleWidget","popupMinWidth","popupMaxWidth","popupMinHeight","popupMaxHeight","popupCloseOnBackdropClick","popupCloseOnEscapeKey","JobStatus","statusLabels","statusTextTemplateString","refetchInterval","IFCJSViewerV3","resetSelectionOnSparqlUpdate","appCss","Set","currentViewerReducer","newVoters","add","delete","debuggerReducer","setDebuggerEnabled","emailRegExp","emails","matchAll","texts","emailsFromLeftToRight","reduceRight","extractNonEmailTexts","SparqlEditor","setYas","setRef","newYas","Button_","CURRENT_KEY_PRESSES","userInputChannel","BroadcastChannel","setupUserInputMessenger","windowElement","addEventListener","broadcastKeyRegistration","registerKey","deregisterKey","Viewer","notification","showJSONEditor","onJsonEditClick","keepAlive","keepAliveInterval","clearInterval","setInterval","isAuthorised","saveTriggers","triggers","updateViewer","mainArea","selectLayout","savingPromise","opts","registerAppCss","saveImpl","showNotification","getViewProps","projectPath","viewerPath","new","timer","strippedData","onDialogOkClick","onHeaderClick","jsonOKClick","voteToDisableUserActions","repoUrl","repoLoginParams","btoa","_instance","loadViewerIntoState","CONNECTED_APPS_STATIC","CONFIG_URL","request","configResponse","loadNewViewerConfig","prejs","error2","loadConfig","shouldConnectToWistorBackend","isAutoLogin","search","fullAccess","userParameters","userUri","userName","silent","viewerParams","isLoggedInUrl","repo","repo2","userResponse","loggedIn","oidcLoginStatus","psw","autoLoginUrl","autoLogin","fixupLegacyRepoURL","sparqlUrl","repoLoginUrl","constructRepoLoginPath","update60Enabled","update60Running","update60","changingProps","loadViewerIntoStateOnlyOnce","popupInfoAtStart","getAndSetDefaultParameterValues","partialViewer","crypto","getRandomValues","Uint8Array","changingProps60","loop60","appCssJson","st","notShowTop","preview","showBottom","notShowBottom","showTop","trigger","signalIsFetching","isFetching","sparqlTemplate","pubVars","mainContainer","sizes","messageType","flexDirection","openAppSettings","overflow","infoMessage","footer","infoDialogueContainer","settingsCheckbox","formatDate","public","autoClose","hideProgressBar","newestOnTop","closeOnClick","rtl","pauseOnFocusLoss","draggable","pauseOnHover","PROJECT","VIEWER","mapStateToProps","DialogPrimitive","DialogTrigger","DialogPortal","DialogClose","DialogOverlay","DialogContent","imgViz","reloadID","parseTextForVariables","command","commandInstance","publishUtils","pvar","publishTextVariable","publishVariable1","runAfterSelection","publishVariableName","publishList","publishVariableParameterTypeName","publishVariableParameterType","singleValue","updateMe2","severity","rv","qq","mounted","findDOMNode","parentNode","afterIntegration","obj1","obj2","hasOwnProperty","_","resultKeyIndex","splice","pubsubNew","cloneDeep","pubsubOrg","update60Timestamp","update60RunningTimestamp","shallowCompare","onComponentDidUpdate","setMessage","sendEvent","reExecuteSparql","firstData22","q","basequery","executedSparql","setBeginSparqlResults","latestData22","onlyOnce","setPubSub","setSelection","selectionValue","selection","once","Singleton","getInstance","iframes","htmlid","createRoot","expandLevel","replaceAll","renderOnce","getParameters","loading222","frameBorder","process","renderEmpty","generateEmptyResponse","htmln","registerMe","cross","crossDel","deleteClick","deletebuttonrule","deletebuttonruleParams","openLink","rs","replaceHeaderJSON","charAt","highlightVariable","resetSelectedValueWhenNotAvailable","zeroResult","aggregateResultsByID","aggregateResultsByFirstParameter","columnNames","columnName","center","centerContent","centertext","hasDeleteColumn","hideHeader","hasNumberedRows","rowNumberHeader","getHeader","rowNumber","iconSize","iconColor","content","inlineblock","highlight","ashtml","iconcenter","handlePubSub","dataWithTimestamps","changes","usePubsub","getPubsub","candidate","SortableItem","useSortable","attributes","listeners","setNodeRef","transition","CSS","Translate","rc","binding","page","analyseResults","restructuredData","id_item","gitem","sp","Parser","sparql2","RegExp","eee","empty","subscribeProps","f","subscribeProp","subscribeValue","subscribeProp2","negationMatch","negatedSubscribeProp","regex2","downloadObjectAsJson","exportObj","exportName","dataStr","downloadAnchorNode","downloadConfig","Notification","box","backgroundColor","camelCaseToSpaces","TableRow","substring","valueObject","secondValueObject","rawHTML","copyButton","copyValue","link2","copyicon","valuesObj","createStateValues","val","nprops","nstate","resetViewer","myPublish","cgi","p_v","entries","key2","AppVariables","appVariables","SparqlTriggerExecutor","setQuery","sparqlManager","setSparqlManager","useSparqlTemplate","resolvedQuery","publishResults","DEFAULT_TRIGGER_DRAFT","createDefaultTriggerDraft","TriggerPopup","triggerIdx","setDraft","labelInputRef","currentTriggerDraft","editTrigger","triggerUpdate","d","fullWidth","sidebar","focus","faAdd","faEdit","faRemove","removeIdx","formStyle","form","onSubmit","required","inputStyle","checkbox","ConfigurationTopBar","triggerPopupOpen","setTriggerPopupOpen","enabledDebugger","debugging","logoutPlatform","createPortal","TopBar","small","to","faArrowLeft","faPaintBrush","IconText","faWrench","faBolt","faBug","chevron","faUser","SubMenu","faRotate","faRightFromBracket","forwardRef","isClickable","faChevronDown","library","fas","combineReducers","payload","replaceSets","composeEnhancers","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","serialize","replacer","compose","createStore","rootReducer","applyMiddleware","thunk","configureStore","useReduxSelector","cgiService","localRepoUrl","origin","isProbablyAWistorServletsEndpoint","idSchema","nonempty","editableColumnStringSchema","editableColumnSchema","intersection","boolean","requiredDataColumnSchema","optionalDataColumnSchema","dataColumnConfigSchema","startRuleActionSchema","startRule","timestampVariable","publishAppVarSchema","rowEditorActionSchema","notificationSchema","onSuccess","onFailure","actionSchema","confirmationSchema","yesIcon","yesColor","noIcon","noColor","buttons","array","actions","confirmation","columnConfigSchema","rowEditorSchema","defaultAction","fallbackMessage","getActionTypes","actionTypes","collectActionTypes","btn","missingTimestampVars","timestampVars","pushTimestampActionVars","timestampVar","getTimestampVars","placeholders","getPlaceholders","addIssue","ZodIssueCode","custom","rowEditActionTypes","missingActionTypes","difference","disallowedActionTypes","instance","_path","_path2","Home","orderBy","Helmet","paragr","subTitle","_excluded","_extends","assign","arguments","source","apply","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","SvgArrowBack","_ref","svgRef","titleId","xmlns","xmlnsXlink","viewBox","enableBackground","xmlSpace","fillRule","clipRule","ForwardRef","BackButton","goBack","backButton","Users","isSuperadmin","password","confirming","deleting","DeleteAppConfigButton","DialogTitle","createdBy","createdOn","DialogActions","autoFocus","deleteAppConfig","Project","newClicked","possible","floor","random","makeID","deleteApp","isAuthenticated","viewerIcon","faLockOpen","faLock","noConfigCache","faXmark","faDatabase","opacity","hasAuth","noViewerMessage","renderViewers","emailsWithAnyDeletionRights","appCreator","LoginPageLayout","LoginButtonBar","spin","SsoButton","EMAIL_PATTERN","Login","useForm","register","handleSubmit","formState","errorReason","setErrorReason","doLogin","loginCredentials","resp","pattern","isSubmitting","RepoLoginResponseSchema","any","repoLogin","loginParams","username","repoLoginResponse","RepoLogin","ssoConfigs","setSsoConfigs","repoInfo","queryString","parametersString","atob","decodeURIComponent","usp","getRepoInfoFromSearchParameters","fetchSsoConfigs","isSuperAdmin","ssoConfig","ssoClientId","image","ProtectedRoute","rest","useRouteMatch","isAuthorized","protectIf","enableMapSet","App","isFetchingLoginInfo","wistorArt","fetchLoginInfo","primereact","render2","exact","hostname","greyPaletteTheme","createTheme","palette","grey","dark","components","MuiButton","getContrastText","primary","borderColor","border","disabledBackground","alpha","hoverOpacity","queryClient","QueryClient","QueryClientProvider","client","ThemeProvider","serviceWorker","ready","registration","unregister","template","published","replacePlaceholderWithValue","subscribePropMatches","pubValue","negatedTopic","escapedValue","placeholderPattern","style22","spinner","LoginHelper","logoff","uploadButton","innerText","fileInput","uploadFile","belongsTo","formData","FormData","l","append","iframe","contentDocument","sendCommand2","commando","failure","commandUrl","getRepoUrl","hasError","debugMessages","level","hasWarn","warn","errors","command2","command3"],"mappings":"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","file":"static/js/main.d5eec883.chunk.js","sourcesContent":["import React, { useRef, useState } from \"react\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { faExclamation, faCheck, faUpRightAndDownLeftFromCenter, faDownLeftAndUpRightToCenter, faUpload, faDownload, faCopy, faPaste } from \"@fortawesome/free-solid-svg-icons\"\nimport AceEditor from 'react-ace'\nimport 'brace/mode/json'\nimport 'brace/theme/ambiance'\nimport style from './JsonEditor.module.css'\nimport clsx from \"clsx\"\nimport { Tooltip } from '@mui/material'\n\n/**\n * JSON editor that works with json-object-values\n * - user formatting *not* retained\n * - changes are only emitted if the JSON is valid\n */\nexport function JsonEditor(props: {\n name?: string,\n exportFileName?: string,\n value: unknown,\n onValueChange: (str: unknown) => void\n}) {\n var valueAsString = JSON.stringify(props.value, null, 4)\n const [ draftValue, setDraftValue ] = useState(valueAsString)\n\n const onChange = (valueString: string) => {\n setDraftValue(valueString)\n try {\n const value = JSON.parse(valueString)\n props.onValueChange(value)\n } catch (e) {\n // ignore\n }\n }\n\n return (\n \n )\n}\n\n/**\n * JSON editor that works for json-strings\n * - user formatting retained\n * - changes are emitted whether the JSON is valid or not\n */\nexport function JsonTextEditor(props: {\n name?: string,\n exportFileName?: string,\n value: string,\n onValueChange?: (str: string) => void\n readonly?: boolean\n}) {\n const inputRef = useRef(null)\n const [ expanded, setExpanded ] = useState(false)\n const [ validationStatus, setValidationStatus ] = useState(null)\n\n const checkJson = () => {\n try {\n JSON.parse(props.value)\n setValidationStatus(\"ok\")\n } catch (e) {\n setValidationStatus(String(e))\n }\n }\n\n const formatJson = () => {\n try {\n const formatted = JSON.stringify(JSON.parse(props.value), null, 4)\n props.onValueChange?.(formatted)\n } catch (e) {\n }\n }\n\n const exportValueAsJson = () => {\n const blob = new Blob([props.value], { type: 'application/json' })\n const url = URL.createObjectURL(blob)\n const a = document.createElement('a')\n a.href = url\n a.download = props.exportFileName || `${props.name || 'data'}.json`\n a.click()\n URL.revokeObjectURL(url)\n }\n\n const importValueFromJson = (event: React.ChangeEvent) => {\n const file = event.target.files?.[0]\n if (file) {\n const reader = new FileReader()\n reader.onload = (e) => {\n const text = e.target?.result\n if (text) {\n props.onValueChange?.(text as string)\n }\n }\n reader.readAsText(file)\n }\n }\n\n const copyValueToClipboard = async () => {\n try {\n await navigator.clipboard.writeText(props.value)\n } catch (err) {\n console.error(err)\n alert('Failed to copy')\n }\n }\n\n const pasteValueFromClipboard = async () => {\n try {\n const text = await navigator.clipboard.readText()\n props.onValueChange?.(text)\n } catch (err) {\n console.error(err)\n alert('Failed to paste')\n }\n }\n\n return (\n
\n {\n if (props.readonly) return\n setValidationStatus(null)\n props.onValueChange?.(value)\n }}\n />\n
\n {!props.readonly && (\n \n \n \n )}\n {validationStatus && (\n
\n \n {validationStatus === \"ok\" ? \"Valid JSON\" : String(validationStatus) }\n
\n )}\n
\n {!props.readonly && (\n \n \n \n )}\n \n \n \n {!props.readonly && (\n \n \n \n )}\n \n \n \n {!props.readonly && (\n \n \n \n )}\n setExpanded(prevExpanded => !prevExpanded)}>\n \n \n
\n
\n );\n}","import React from 'react'\nimport styles from './Dialog.module.css'\n// import {Button} from 'reactstrap';\n\nconst Dialog = ({ children, onClose }) => {\n return (\n
\n
e.stopPropagation()}>\n {/*
\n \n
*/}\n
\n {children}\n {/*
\n \n
*/}\n
\n
\n
\n )\n}\n\nexport default Dialog\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"main\":\"Tab_main__3hRYf\",\"areaContainer\":\"Tab_areaContainer__uoK5W\",\"viewMode\":\"Tab_viewMode__1R_jG\",\"tabs\":\"Tab_tabs__8TT4t\",\"tab\":\"Tab_tab__2juvH\",\"selected\":\"Tab_selected__2GbnM\",\"refresh\":\"Tab_refresh__3o4j1\",\"threeColorTemplate\":\"Tab_threeColorTemplate__8xvrv\",\"carouselTabsContainer\":\"Tab_carouselTabsContainer__g_Gab\",\"carouselButton\":\"Tab_carouselButton__1jj7D\",\"carouselItem\":\"Tab_carouselItem__2zDPU\"};","export default __webpack_public_path__ + \"static/media/person.89f69b5b.svg\";","export default __webpack_public_path__ + \"static/media/gear.e350f069.svg\";","import { Component } from 'react'\nimport { Button } from 'reactstrap'\nimport styles from './Header.module.css'\nimport person from '../images/person.svg'\nimport gear from '../images/gear.svg'\nimport { connect } from 'react-redux'\nimport { withRouter } from 'react-router-dom'\nimport { Grow } from '@mui/material'\nimport Command from '../helpers/Command'\nimport infoIcon from '../images/info.svg'\nimport { AutoHyperlink } from './AutoHyperlink'\nimport { logout } from '../api/login'\n\nconst BACKUP_LOGO = '/logos/logo-wistor.png'\n\nclass Header extends Component {\n state = { collapsed: true }\n\n logoutRepoOrPlatform = async () => {\n let bbsparql = this.props.bbsparqlendpoint\n if (bbsparql != null) {\n Command.sendCommand(this, 'logout', null, function () {\n window.location.reload(false)\n })\n } else {\n console.log('logout from config mongo/nodejs platform')\n await logout()\n window.location.href = '/'\n // localStorage.removeItem('kvk-vb-token');\n }\n\n //window.location.reload(false);\n }\n\n login = () => {\n this.props.history.push('/login', this.props.location.pathname)\n }\n\n onClickManageUsers = () => {\n this.props.history.push('/users', this.props.location.pathname)\n }\n\n mouseOver = (e) => {\n console.log('in')\n // this.setState({collapsed:false});\n }\n mouseOut = (e) => {\n console.log('out')\n // this.setState({collapsed:true});\n }\n\n render() {\n /** @type {LoginState} */\n const loginState = this.props.loginState\n const collapsed = this.state.collapsed\n var logoutbutton =this.props.logoutbutton;\n if (logoutbutton==null) logoutbutton=false;\n\n const showLogoutButton = !loginState.isLoggingIn\n // always show logout button for platform users\n && (logoutbutton || loginState.isLoggedIn)\n\n const showLoginButton = !loginState.isLoggingIn\n && !showLogoutButton\n && !loginState.isLoggedIn\n && !this.props.noLoginButton\n\n return (\n \n
\n \n \n\n
\n \n {this.props.title || ''}\n {this.props.onInfoClick && (\n this.props.onInfoClick()}\n />\n )}\n \n \n
\n
\n {(!loginState.isLoggingIn && loginState.isLoggedIn) && (\n <>\n \"person\"\n
\n
\n {loginState.user?.name}\n
\n {(loginState.user?.role === 'admin' || loginState.user?.role === 'superadmin') && (\n \n Manage Users\n \n )}\n
\n \n )}\n {showLogoutButton && (\n \n )}\n {showLoginButton && (\n \n )}\n
\n
\n
\n \n )\n }\n}\n\nconst mapStateToProps = (state) => ({\n loginState: state.login,\n})\n\nHeader = withRouter(Header)\n\nexport default connect(mapStateToProps)(Header)\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"mainContainer\":\"Home_mainContainer__2GzK5\",\"main\":\"Home_main__-wJEx\",\"content\":\"Home_content__rSrZN\",\"title\":\"Home_title__2JJd_\",\"subTitle\":\"Home_subTitle__3qxJR\",\"paragr\":\"Home_paragr__2LXKK\",\"project\":\"Home_project__2Eq02\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"top-bar\":\"ConfigurationTopBar_top-bar__9VaN_\",\"small\":\"ConfigurationTopBar_small__2_Cf1\",\"item\":\"ConfigurationTopBar_item__1EEbN\",\"clickable\":\"ConfigurationTopBar_clickable__38qut\",\"active\":\"ConfigurationTopBar_active__1NoVp\",\"sub-menu\":\"ConfigurationTopBar_sub-menu__2WKn0\",\"separator\":\"ConfigurationTopBar_separator__Lr2FU\",\"chevron\":\"ConfigurationTopBar_chevron__1sqbh\",\"icon-text\":\"ConfigurationTopBar_icon-text__25xc7\"};","import * as React from 'react'\nimport {Slot} from '@radix-ui/react-slot'\nimport {cva, type VariantProps} from 'class-variance-authority'\nimport {mergeClasses} from '../../helpers/styling'\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default:\n \"bg-primary text-primary-foreground shadow hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n outline:\n \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2\",\n sm: \"h-8 rounded-md px-3 text-xs\",\n lg: \"h-10 rounded-md px-8\",\n icon: \"h-9 w-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes,\n VariantProps {\n asChild?: boolean\n}\n\nconst Button = React.forwardRef(\n ({ className, variant, size, type, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\"\n return (\n \n )\n }\n)\nButton.displayName = \"Button\"\n\nexport { Button, buttonVariants }\n","import { TablePlusPlusCustomConfig } from \"../components/widgets/TablePlusPlus/config-schema\"\nimport { PublishedDict } from \"../redux/pubsub\"\nimport PublishUtils from \"./PublishUtils\"\nimport { OpaqueSparqlResults } from \"./sparqlResultHelpers\"\n\n/**\n * Data-structure of a configuration-item\n */\nexport type ConfigDescription<\n T extends ConfigVarTypename,\n TOptions extends ConfigOptions,\n TName extends string = string\n> = {\n name: TName\n type: T\n label: string\n options?: TOptions\n}\n\ntype ConfigVarTypename = 'select' | 'boolean' | 'array' | 'json' | 'yasgui'\n | 'javascript' | 'button' | 'text'\n | 'tablepp-custom'\ntype ConfigOptions = PresentConfigOptions | undefined\ntype PresentConfigOptions = ReadonlyArray<{ readonly label: string, readonly value: string }>\n\n/**\n * React-props that every widget gets\n */\nexport type BaseWidgetProps = {\n onChange: any\n withinSelectedTab?: null | boolean\n panelstyle: string\n mode?: null | 'edit'\n pubsub: PublishedDict\n publish: (topic: string, value: unknown) => void\n}\n\n/**\n * React-props that every sparql-widget gets\n */\nexport type SparqlWidgetProps = {\n data?: OpaqueSparqlResults\n}\n\n/**\n * React-props that every area-widget gets\n */\nexport type AreaWidgetProps = { areas: {}[] }\n\n/**\n * React-props from configuration-descriptions\n */\nexport type ConfigurablePropsFromDescription<\n T extends ReadonlyArray>\n> =\n ObjectFrom, ConfigTypeTuple>\n\n/**\n * An object from two tuples \"zipped\" together: a tuple containing keys and a tuple containing types\n * source: https://stackoverflow.com/a/70398429\n */\ntype ObjectFrom<\n N extends Record, PropertyKey>,\n T extends readonly any[],\n> =\n { [K in keyof TupleToObject as N[K]]: T[K] };\n\n/**\n * A tuple typed as an object (by omitting keys that are commonly found in arrays)\n * source: https://stackoverflow.com/a/70398429\n */\ntype TupleToObject = Omit\n\n/**\n * A tuple of typenames from configuration-items\n */\ntype ConfigNameTuple>> = {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n [K in keyof T]: T[K] extends ConfigDescription\n ? Name\n : never\n}\n\n/**\n * a tuple of types from configuration-items\n */\ntype ConfigTypeTuple>> = {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n [K in keyof T]: T[K] extends ConfigDescription\n ? ConfigurablePropType\n : never\n}\n\n/**\n * Type from typename\n */\ntype ConfigurablePropType =\n T extends 'array' ? (null | undefined | string[]) :\n T extends 'boolean' ? (null | undefined | boolean) :\n T extends 'json' ? (null | undefined | {} | []) :\n T extends 'yasgui' ? (null | undefined | string) :\n T extends 'select' ? (null | undefined | (TOptions extends PresentConfigOptions ? TOptions[number]['value'] : never)) :\n T extends 'text' ? (null | undefined | string) :\n T extends 'tablepp-custom' ? (null | undefined | TablePlusPlusCustomConfig) :\n never\n\ntype PublishedState = Record\n\ntype SubscriptionState =\n { isValid: false, hasChanged: boolean, current: unknown, topic: null | undefined | string } |\n { isValid: true, hasChanged: boolean, current: T, topic: string }\n\ntype SubscriptionTransformation = { success: false }| { success: true, value: T }\n\nexport function getSubscription(\n previousState: null | undefined | PublishedState,\n currentState: PublishedState,\n topic: null | undefined | string,\n transform: (x: unknown) => SubscriptionTransformation\n): SubscriptionState {\n if (!topic) return { isValid: false, hasChanged: false, current: undefined, topic }\n\n const previous = previousState?.[topic]\n const current = currentState?.[topic]\n const hasChanged = previous !== current && current != null\n const transformation = transform(current)\n if (!transformation.success) return { isValid: false, hasChanged, current, topic }\n\n return {\n isValid: transformation.success,\n hasChanged: previous !== current && current != null,\n current: transformation.value,\n topic,\n }\n}\n\nexport function isValidIndex(x: unknown): SubscriptionTransformation {\n const str = String(x)\n const number = Number(x)\n const int = parseInt(str, 10)\n const isNotInt = int !== number\n if (x == null || Number.isNaN(number) || isNotInt) return { success: false }\n return { success: true, value: int }\n}\n\nexport function isString(x: unknown): SubscriptionTransformation {\n return typeof x !== 'string'\n ? { success: false }\n : { success: true, value: x }\n}\n\nexport function interpolateSubscriptions(\n widget: {props: { pubsub: Record}},\n strTemplate: null | undefined | string,\n outputFormat: 'boolean',\n) {\n if (outputFormat === 'boolean') {\n const interpolated = PublishUtils.processStringForParameters(widget, strTemplate)\n return String(interpolated).toLowerCase() === 'true'\n }\n throw new Error('not implemented')\n }\n","import React from 'react'\nimport styles from './Tab.module.css'\nimport Area from '../Area'\nimport { Icon } from './Icon'\nimport { Button } from '@mui/material'\nimport { IconProp } from '@fortawesome/fontawesome-svg-core'\nimport { BaseWidgetProps, ConfigurablePropsFromDescription, getSubscription, isString, isValidIndex } from '../../helpers/widget'\n\ntype Props = BaseWidgetProps & ConfigurableProps & SpecificWidgetProps\ntype ConfigurableProps = ConfigurablePropsFromDescription\ntype SpecificWidgetProps = { areas: {}[] }\n\ntype State = {\n selectedIndex: number\n hideTabs: string[]\n areas: {}[]\n id: number\n}\n\nconst APPEARANCE = {\n TRADITIONAL: 'TRADITIONAL',\n CAROUSEL_WITHOUT_BUTTONS: 'CAROUSEL_WITHOUT_BUTTONS',\n CAROUSEL_WITH_BUTTONS: 'CAROUSEL_WITH_BUTTONS',\n} as const\n\nexport default class Tab extends React.Component {\n static tabId = 0\n state: State = { selectedIndex: 0, hideTabs: [], areas: [], id: Tab.tabId++ }\n\n\n static getDescription = () => tabDescription\n\n static registeredTabComponents = [] //registering all tabs for 'back button'\n\n getTabId() {\n return this.state.id\n }\n\n componentDidMount() {\n this.updateTabs(null, this.props.hideTabs, this.props.tabSelectionSubscription)\n }\n\n componentDidUpdate(prevProps: Props) {\n this.updateTabs(prevProps, this.props.hideTabs, this.props.tabSelectionSubscription)\n }\n\n updateTabs(\n prevProps: null | Props,\n hideTabsTopic: undefined | null | string,\n tabIndexTopic: undefined | null | string,\n ) {\n const tabIndex = getSubscription(prevProps?.pubsub, this.props.pubsub, tabIndexTopic, isValidIndex)\n if (!tabIndex.isValid && tabIndex.current != null && tabIndex.topic != null)\n return alert(`Value \"${tabIndex.current}\" from topic \"${tabIndex.topic}\" is not a valid index\"`)\n\n const hideTabs = getSubscription(prevProps?.pubsub, this.props.pubsub, hideTabsTopic, isString)\n if (!hideTabs.isValid && hideTabs.current != null && hideTabs.topic != null)\n return alert(`Value \"${hideTabs.current}\" from topic \"${hideTabs.topic}\" is not a string\"`)\n\n if (!tabIndex.hasChanged && !hideTabs.hasChanged)\n return\n\n let newSelectedIndex = this.state.selectedIndex\n if (tabIndex.isValid && tabIndex.hasChanged) newSelectedIndex = tabIndex.current\n\n let newHideTabs: string[] = []\n if (hideTabs.isValid && hideTabs.hasChanged) newHideTabs = hideTabs.current.split(',')\n\n if (this.props.tabs?.length && this.props.hideTabIDs && newSelectedIndex != null) {\n const tabHideId = this.props.hideTabIDs[newSelectedIndex]\n const firstNonHiddenIndex = getFirstNonHiddenTab(this.props.tabs, this.props.hideTabIDs, newHideTabs)\n if (firstNonHiddenIndex != null && newHideTabs?.includes(tabHideId))\n newSelectedIndex = firstNonHiddenIndex\n }\n\n if (newHideTabs) this.setState({ hideTabs: newHideTabs })\n if (newSelectedIndex !== this.state.selectedIndex) this.setState({ selectedIndex: newSelectedIndex })\n }\n\n onTabClick = (index: number) => {\n let tabSelectionSubscription = this.props.tabSelectionSubscription\n\n if (tabSelectionSubscription) this.props.publish(tabSelectionSubscription, index)\n this.setState({ selectedIndex: index })\n }\n\n navigateToNextTab() {\n if (!this.props.tabs) return\n this.onTabClick(\n this.state.selectedIndex >= (this.props.tabs.length - 1)\n ? 0\n : this.state.selectedIndex + 1\n )\n }\n\n render() {\n let mode = this.props.mode\n return (\n \n {(!this.props.appearance || this.props.appearance === APPEARANCE.TRADITIONAL) && (\n \n )}\n\n {this.props.tabs?.map((tab, index) => {\n let areaConfig = this.props.areas[index] || {}\n\n let selected = index == this.state.selectedIndex\n // console.log(index,this.state.selectedIndex,selected);\n if (this.props.withinSelectedTab != null) {\n if (this.props.withinSelectedTab == false) {\n selected = false\n // console.log(\"TEST FF NIET SELECTED TAB WANT TAB IS NIET ZICHTBAAR\");\n }\n }\n\n return (\n
\n this.navigateToNextTab() : undefined}\n />\n
\n )\n })}\n\n {(this.props.appearance === APPEARANCE.CAROUSEL_WITHOUT_BUTTONS ||\n this.props.appearance === APPEARANCE.CAROUSEL_WITH_BUTTONS) && (\n \n )}\n \n )\n }\n}\n\nconst tabDescription = {\n name: 'Tab',\n component: Tab,\n label: 'Tab Layout',\n variables: [\n {\n name: 'appearance',\n type: 'select',\n label: 'Appearance',\n options: [\n {\n label: 'Traditional',\n value: APPEARANCE.TRADITIONAL,\n },\n {\n label: 'Carousel without buttons',\n value: APPEARANCE.CAROUSEL_WITHOUT_BUTTONS,\n },\n {\n label: 'Carousel with buttons',\n value: APPEARANCE.CAROUSEL_WITH_BUTTONS,\n },\n ],\n },\n {\n name: 'carouselClickNavigation',\n type: 'boolean',\n label: 'Enable click navigation (only for carousel appearance)',\n },\n {\n name: 'tabs',\n type: 'array',\n label: 'Tabs',\n topicValueInterpolationEnabled: true\n },\n {\n name: 'tabSelectionSubscription',\n type: 'text',\n label: 'Variabele to listen to for tab selection',\n },\n {\n name: 'hideTabIDs',\n type: 'array',\n label: 'tab name (ids) that can be used to hide a tab.',\n },\n {\n name: 'hideTabs',\n type: 'text',\n label:\n 'Variabele to listen to for tab visualisation. Use tab names to hide the tabs',\n },\n {\n name: 'icons',\n type: 'array',\n label: 'fa icon names when no icon is defined. ',\n },\n {\n name: 'inactiveTabsOnlyIcons',\n type: 'boolean',\n label: 'Inactive tabs will only have icons if icons are defined'\n },\n {\n name: 'initialTabSelection',\n type: 'text',\n label: 'index of the initial selected tab',\n },\n {\n name: 'areas',\n type: 'json',\n // label: 'Column widths or row heights (separated by commas). Value can be a number (which will be set as flex values/verhoudingswaarden) or a px/% value',\n label: 'area definitions',\n },\n ],\n} as const\n\nfunction TraditionalTabs(props: {\n tabs: string[]\n hideTabIDs: string[]\n hideTabs: string[]\n icons: IconProp[]\n selectedIndex: number\n inactiveTabsOnlyIcons: boolean\n onTabClick: (index: number) => any\n}) {\n return (\n
\n {props.tabs.map((tabText, index) => {\n const tabHideId = props.hideTabIDs?.at(index)\n if (tabHideId && props.hideTabs?.includes(tabHideId)) return null\n\n let isSelected = index === props.selectedIndex\n const hideTabText = props.inactiveTabsOnlyIcons && props.icons && !isSelected\n return (\n props.onTabClick(index)}\n >\n {props.icons != null && (\n \n )}\n {!hideTabText && tabText}\n
\n )\n })}\n \n )\n}\n\nfunction CarouselTabs(props: {\n tabs: string[]\n selectedIndex: number\n withButtons: boolean\n prevIcon?: null | IconProp\n itemIcon?: null | IconProp\n nextIcon?: null | IconProp\n onTabClick: (index: number) => any\n}) {\n return (\n
\n {props.withButtons &&\n {\n if (props.selectedIndex <= 0) return\n props.onTabClick(props.selectedIndex - 1)\n }}\n className={styles.carouselButton}\n >\n \n \n }\n {props.tabs?.map((tabLabel, i) => (\n props.onTabClick(i)}\n >\n \n \n ))}\n {props.withButtons &&\n {\n if (props.tabs && props.selectedIndex + 1 >= props.tabs.length) return\n props.onTabClick(props.selectedIndex + 1)\n }}\n >\n \n \n }\n
\n )\n}\n\nexport function getFirstNonHiddenTab(tabs: string[], hideTabIds: string[], hideTabs: string[]) {\n for (let i = 0; i < tabs.length; i++) {\n const tabHideId = hideTabIds?.[i]\n if (tabHideId && !hideTabs?.includes(tabHideId)) return i\n }\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"Header_wrapper__3z-hj\",\"main\":\"Header_main__3czEd\",\"modern\":\"Header_modern__3hyIe\",\"title\":\"Header_title__2C1Mo\",\"centerPart\":\"Header_centerPart__RkjuJ\",\"auth\":\"Header_auth__3IKlE\",\"nameContainer\":\"Header_nameContainer__1xkA5\",\"infoIcon\":\"Header_infoIcon__2hP7N\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"mainContainer\":\"Users_mainContainer__blMaO\",\"main\":\"Users_main__1Ek77\",\"content\":\"Users_content__2hEUp\",\"title\":\"Users_title__UBjWr\",\"tableContainer\":\"Users_tableContainer__spoq6\",\"add\":\"Users_add__1M5OB\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"main\":\"Table2_main__3S9MH\",\"copyicon\":\"Table2_copyicon__-E6ZQ\",\"headertxt\":\"Table2_headertxt__k1L5n\",\"list\":\"Table2_list__35G0R\",\"firstItemBold\":\"Table2_firstItemBold__1-sUM\",\"link\":\"Table2_link__3RM4J\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"main\":\"SearchAutocomplete_main__1k8NJ\",\"inputContainer\":\"SearchAutocomplete_inputContainer__2Ybjz\",\"threeColorTemplate\":\"SearchAutocomplete_threeColorTemplate__1hVXq\",\"items\":\"SearchAutocomplete_items__cpVFv\",\"item\":\"SearchAutocomplete_item__2NkmI\",\"selected\":\"SearchAutocomplete_selected__1alXJ\",\"noResults\":\"SearchAutocomplete_noResults__1wYx9\",\"headertxt\":\"SearchAutocomplete_headertxt__20CQu\"};","class AfterJS {\n static init() {\n // console.log(\"init afterjs\");\n }\n static getJSScriptAfterSelectionChange() {\n return {\n name: 'jsAfterSelection',\n type: 'text',\n label: 'js calls after selection',\n }\n }\n\n static runAfterSelection(widget) {\n //AfterJS.init(\"run after selection \",widget);\n\n if (widget.props.jsAfterSelection != null) {\n let js = widget.props.jsAfterSelection\n console.log(js, widget)\n try {\n eval(js) //eslint-disable-line no-eval\n } catch (e) {\n console.log(e)\n }\n }\n }\n\n static fillParameterUsingSelectionURIAndPred(widget, parameter, pred) {\n let pv = widget.props.publishVariable\n let uri = widget.props.pubsub[pv]\n //if (uri==null) return;\n\n let sparql =\n 'select distinct ?result where {optional {<' +\n uri +\n '><' +\n pred +\n '>?value} bind (IF(BOUND(?value),\"niks\",\"3d\") as ?result)} limit 1'\n // console.log(sparql);\n window.top.MySparql.select(sparql, function (arg) {\n let result = arg.results.bindings[0].result.value\n // console.log(result);\n widget.props.publish(parameter, result)\n })\n\n //console.log(widget,parameter,pred);\n }\n\n static test(widget) {\n console.log('testing Afterjs ')\n\n console.log(widget)\n }\n}\n\nexport default AfterJS\n","import * as React from \"react\"\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\n\nimport { mergeClasses } from '../../helpers/styling'\n\nconst Popover = PopoverPrimitive.Root\n\nconst PopoverTrigger = PopoverPrimitive.Trigger\n\nconst PopoverClose = PopoverPrimitive.PopoverClose\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n \n \n \n))\nPopoverContent.displayName = PopoverPrimitive.Content.displayName\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverClose }\n","import { useDialog } from \"../hooks/use-dialog\"\n\nimport { HelpDialog } from \"./HelpDialog\"\nimport { useMemo } from \"react\"\n\nexport function FontListButton() {\n const show = useDialog()\n return (\n {\n e.preventDefault()\n show(HelpDialog, {\n component: FontList\n })\n }}>\n Show available fonts...\n \n )\n}\n\nconst AVAILABLE_FONTS = [\n \"Exo\",\n \"Exo 2 Variable\",\n \"Maison Neue\",\n \"Roboto\"\n] as const\n\nexport function FontList(props: {\n onClose: () => void\n}) {\n return (\n
\n

Click to copy

\n \n
\n )\n}","import { z } from \"zod\"\n\nexport const ProjectSchema = z.object({\n id: z.string(),\n title: z.string(),\n path: z.string(),\n createdAt: z.string()\n})\n\nexport type Project = z.infer\n","import { z } from \"zod\"\nimport { ProjectSchema } from \"./project\"\n\nexport const UserSchema = z.object({\n id: z.string(),\n email: z.string(),\n name: z.string(),\n project: ProjectSchema.optional(),\n role: z.union([\n z.literal(\"superadmin\"),\n z.literal(\"admin\"),\n z.literal(\"editor\"),\n z.literal(\"viewer\")\n ])\n})\n\nexport type User = z.infer\n","import axios, { AxiosError } from \"axios\"\nimport { User, UserSchema } from \"../model/user\"\n\nconst LS_TOKEN_KEY = 'kvk-vb-token'\n\nexport type LoginCredentials = {\n email: string\n password: string\n}\n\ntype LoginSuccess = {\n success: true\n user: User\n}\n\ntype LoginFailure = {\n success: false\n reason: string\n}\n\nexport async function login(credentials: LoginCredentials): Promise {\n try {\n const response = await axios.post('/api/login', credentials)\n const token = response.data.token\n localStorage.setItem(LS_TOKEN_KEY, token)\n\n const user = UserSchema.parse(response.data.me)\n return { success: true, user }\n } catch (error) {\n localStorage.removeItem(LS_TOKEN_KEY)\n\n if (!(error instanceof AxiosError)) {\n throw error\n }\n\n if (typeof error.response?.data !== 'string') {\n console.error(error)\n return { success: false, reason: 'Request failure' }\n }\n\n return { success: false, reason: error.response?.data }\n }\n}\n\nexport async function logout() {\n localStorage.removeItem(LS_TOKEN_KEY)\n}\n\nconst ERR_INVALID_RESPONSE_WITH_SUGGESTION =\n 'Invalid response! When developing use `yarn dev`.'\n\n export function getCurrentToken():string\n {\n \n const token = localStorage.getItem(LS_TOKEN_KEY)\n if (token == null) return \"no token\";\n return `Bearer ${token}`;\n\n }\n\nexport async function getCurrentUser(): Promise {\n const token = localStorage.getItem(LS_TOKEN_KEY)\n if (token == null) return null\n\n try {\n const response = await axios.get('/api/me', {\n headers: {\n Authorization: `Bearer ${token}`,\n withCredentials: true\n }\n })\n if (!response.data.me) {\n // noinspection ExceptionCaughtLocallyJS\n throw new Error(ERR_INVALID_RESPONSE_WITH_SUGGESTION)\n }\n \n return UserSchema.parse(response.data.me)\n } catch (error) {\n localStorage.removeItem(LS_TOKEN_KEY)\n\n if (!(error instanceof AxiosError)) {\n throw error\n }\n\n console.error(error)\n return null\n }\n}\n","export default __webpack_public_path__ + \"static/media/wistor-logo-white-with-text.8e0d5b43.svg\";","import React, { Component } from 'react'\nimport styles from './Footer.module.css'\nimport logo from '../images/wistor-logo-white-with-text.svg'\nimport { withRouter } from 'react-router-dom'\n\nclass Footer extends Component {\n render() {\n //var keuze=\"normaal\";\n var keuze = 'wistor'\n\n try {\n if (this.props.location.pathname.includes('waternet')) {\n keuze = 'waternet'\n }\n } catch (er) {}\n try {\n if (this.props.location.pathname.includes('kvk')) {\n keuze = 'kvk'\n }\n } catch (er) {}\n try {\n if (this.props.location.pathname.includes('buildingbits')) {\n keuze = 'buildingbits'\n }\n } catch (er) {}\n try {\n if (this.props.location.pathname.includes('rws')) {\n keuze = 'buildingbits'\n }\n } catch (er) {}\n try {\n if (this.props.location.pathname.includes('connectedapps')) {\n keuze = 'buildingbits'\n }\n } catch (er) {}\n try {\n if (this.props.location.pathname.includes('mayer')) {\n keuze = 'mayer'\n }\n } catch (er) {}\n return (\n
\n
\n \n
\n \"logo\"\n
\n
\n {\n {\n normaal: (\n
\n
\n \n mayersoftwaredevelopment\n \n
\n
\n \n Wistor\n \n
\n
\n ),\n waternet2: (\n
\n Als u vragen of opmerkingen heeft kun u een bericht sturen\n naar{' '}\n \n OTLviewer@waternet.nl\n \n
\n ),\n kvk: (\n \n ),\n buildingbits: (\n
\n
\n \n Wistor\n \n
\n
\n ),\n wistor: (\n
\n
\n \n Wistor\n \n
\n
\n ),\n mayer: (\n
\n
\n \n mayersoftwaredevelopment\n \n
\n
\n ),\n }[keuze]\n }\n\n {/*
\n
Michiel Mayer
\n
Hans Schevers
\n
*/}\n
\n
\n )\n }\n}\n\nFooter = withRouter(Footer)\n\nexport default Footer\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"main\":\"Slider_main__2CxOA\",\"label\":\"Slider_label__2e9Wr\",\"container\":\"Slider_container__3ZWIg\",\"slider\":\"Slider_slider__2O89W\",\"rangeValue\":\"Slider_rangeValue__L0PAk\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"login-app\":\"LoginPageLayout_login-app__1oxY2\",\"login-container\":\"LoginPageLayout_login-container__2Rrzi\",\"login-main\":\"LoginPageLayout_login-main__1Sbct\",\"login-button-bar\":\"LoginPageLayout_login-button-bar__2UdlH\",\"login-error\":\"LoginPageLayout_login-error__oBKEo\",\"login-spinner\":\"LoginPageLayout_login-spinner__3p4Dd\",\"login-button-sso\":\"LoginPageLayout_login-button-sso__qwwjd\"};","import axios from 'axios'\n\nexport const fetchProjects = (cb) => async (dispatch, getState) => {\n if (getState().projects.loaded) return\n dispatch({ type: 'FETCH_PROJECTS_REQUEST' })\n try {\n let { data } = await axios({\n method: 'get',\n url: '/api/projects',\n headers: {\n Authorization: `Bearer ${localStorage.getItem('kvk-vb-token')}`,\n },\n })\n dispatch({ type: 'FETCH_PROJECTS_SUCCESS', data })\n } catch (error) {\n console.log(error)\n cb(error)\n }\n}\n\nexport const createProject = (values, cb) => async (dispatch, getState) => {\n try {\n let { data } = await axios({\n method: 'post',\n url: '/api/projects',\n headers: {\n Authorization: `Bearer ${localStorage.getItem('kvk-vb-token')}`,\n },\n data: values,\n })\n dispatch({ type: 'NEW_PROJECT_SUCCESS', data })\n } catch (error) {\n console.log(error)\n cb(error)\n }\n}\n\nconst initialState = {\n loaded: false,\n loading: false,\n items: [],\n}\n\nexport default function handleProjects(state = initialState, action) {\n switch (action.type) {\n case 'FETCH_PROJECTS_REQUEST':\n return {\n ...state,\n loading: true,\n }\n case 'FETCH_PROJECTS_SUCCESS':\n return {\n ...state,\n items: action.data,\n loading: false,\n loaded: true,\n }\n case 'NEW_PROJECT_SUCCESS':\n return {\n ...state,\n items: [...state.items, action.data],\n }\n default:\n return state\n }\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"JsonEditor_wrapper__3kqZQ\",\"bar\":\"JsonEditor_bar__PSXEl\",\"separator\":\"JsonEditor_separator__1ANQD\",\"json-status\":\"JsonEditor_json-status__1mK3X\",\"ok\":\"JsonEditor_ok__1YvMS\",\"error\":\"JsonEditor_error__33jF2\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"main\":\"BBPicture_main__1QcsH\",\"list\":\"BBPicture_list__3DSqp\",\"firstItemBold\":\"BBPicture_firstItemBold__2iyh7\",\"link\":\"BBPicture_link__3slHV\"};","type LayoutName = keyof typeof LAYOUT_NAME\ntype Config = { showFooter: boolean }\ntype LayoutConfig = { [K in LayoutName]: Config }\n\nexport const LAYOUT_NAME = {\n CUSTOM: 'CUSTOM',\n ORIGINAL: 'ORIGINAL',\n} as const\n\nconst LOAD_STYLE = {\n CUSTOM: 'overlay',\n ORIGINAL: 'classic',\n} as const\n\nconst LAYOUT_CONFIG: LayoutConfig = {\n CUSTOM: { showFooter: false },\n ORIGINAL: { showFooter: true },\n}\n\nexport function inflateLayout(viewer: V) {\n const layoutName = viewer.layoutName || LAYOUT_NAME.ORIGINAL\n return { ...viewer, layoutName, layout: LAYOUT_CONFIG[layoutName] }\n}\n\nexport function getLoadStyle(layoutName: LayoutName = LAYOUT_NAME.ORIGINAL) {\n return LOAD_STYLE[layoutName]\n}\n","import * as React from \"react\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\nimport { Check, ChevronDown, ChevronUp } from \"lucide-react\"\n\nimport { mergeClasses as cn } from '../../helpers/styling'\n\nconst Select = SelectPrimitive.Root\n\nconst SelectGroup = SelectPrimitive.Group\n\nconst SelectValue = SelectPrimitive.Value\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, children, ...props }, ref) => (\n span]:line-clamp-1\",\n className\n )}\n {...props}\n >\n {children}\n \n \n \n \n))\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName\n\nconst SelectScrollUpButton = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n \n \n))\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName\n\nconst SelectScrollDownButton = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n \n \n))\nSelectScrollDownButton.displayName =\n SelectPrimitive.ScrollDownButton.displayName\n\nconst SelectContent = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, children, position = \"popper\", ...props }, ref) => (\n \n \n \n \n {children}\n \n \n \n \n))\nSelectContent.displayName = SelectPrimitive.Content.displayName\n\nconst SelectLabel = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nSelectLabel.displayName = SelectPrimitive.Label.displayName\n\nconst SelectItem = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, children, ...props }, ref) => (\n \n \n \n \n \n \n\n {children}\n \n))\nSelectItem.displayName = SelectPrimitive.Item.displayName\n\nconst SelectSeparator = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName\n\nexport {\n Select,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectLabel,\n SelectItem,\n SelectSeparator,\n SelectScrollUpButton,\n SelectScrollDownButton,\n}\n","export const FETCH_VIEWER_SUCCESS = 'FETCH_VIEWER_SUCCESS'\nexport const FETCH_PROJECT_SUCCESS = 'FETCH_PROJECT_SUCCESS'\nexport const SAVE_VIEWER_SUCCESS = 'SAVE_VIEWER_SUCCESS'\nexport const DELETE_APP_SUCCESS = 'DELETE_APP_SUCCESS'\nexport const SET_LAYOUT_NAME = 'SET_LAYOUT_NAME'\n\nconst initialState = {\n loading: true,\n viewers: [],\n}\n\nexport default function handleProject(state = initialState, action) {\n switch (action.type) {\n\n case FETCH_PROJECT_SUCCESS:\n return {\n ...state,\n ...action.data,\n viewers: action.data.viewers\n .filter(v => !v.deleted)\n .map(v => ({ ...v, loaded: false })),\n loading: false,\n }\n\n case FETCH_VIEWER_SUCCESS:\n \n window.top.data = action.data\n if (action.data==null)\n {\n return {\n ...state,\n viewers: [\n ...state.viewers.filter((item) => item.id !== null),\n { ...action.data, loaded: true },\n ],\n }\n }\n return {\n ...state,\n viewers: [\n ...state.viewers.filter((item) => item.id !== action.data.id),\n { ...action.data, loaded: true },\n ],\n }\n\n case SAVE_VIEWER_SUCCESS:\n return {\n ...state,\n viewers: [\n ...state.viewers.filter((item) => item.id !== action.data.id),\n { ...action.data, loaded: true },\n ],\n }\n\n case DELETE_APP_SUCCESS:\n return {\n ...state,\n viewers: state.viewers.filter(v => v.id !== action.data.id),\n }\n\n case SET_LAYOUT_NAME:\n return { ...state, layoutName: action.data }\n\n default:\n return state\n\n }\n}\n","import style from \"./Button.module.css\"\nimport clsx from \"clsx\"\n\nexport type ButtonVariant = \"primary\" | \"info\" | \"outline\"\n\nexport function Button(props: {\n variant: ButtonVariant\n className?: string\n children?: React.ReactNode\n type?: \"button\" | \"submit\"\n} & Omit, \"type\">) {\n const { variant, className, children, type, ...otherProps } = props\n return (\n \n )\n}\n\nexport function ButtonLink(props: {\n variant: ButtonVariant\n className?: string\n children?: React.ReactNode\n} & React.HTMLProps) {\n const { variant, className, children, ...otherProps } = props\n return (\n \n {props.children}\n \n )\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"form\":\"Form_form__1Bv9v\",\"form-field\":\"Form_form-field__1Xs7n\",\"checkbox\":\"Form_checkbox__3V-U6\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"main\":\"SelectBox_main__2fb1x\",\"threeColorTemplate\":\"SelectBox_threeColorTemplate__JP90R\",\"label\":\"SelectBox_label__1bhKt\",\"round\":\"SelectBox_round__3DRif\",\"extra\":\"SelectBox_extra__7C26_\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"main\":\"SplitLayout_main__ZfdFV\",\"preview\":\"SplitLayout_preview__7iAtg\",\"row\":\"SplitLayout_row__2Hq6r\",\"column\":\"SplitLayout_column__1TXiI\",\"areaContainer\":\"SplitLayout_areaContainer__25FOL\",\"overflowAuto\":\"SplitLayout_overflowAuto__2pVrk\",\"overflowHidden\":\"SplitLayout_overflowHidden__2sm8L\"};","import * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { mergeClasses } from '../../helpers/styling'\n\nconst labelVariants = cva(\n \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n)\n\nconst Label = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef &\n VariantProps\n>(({ className, ...props }, ref) => (\n \n))\nLabel.displayName = LabelPrimitive.Root.displayName\n\nexport { Label }\n","import axios from 'axios'\n\nexport const fetchUsers = (cb) => async (dispatch, getState) => {\n if (getState().users.loaded) return\n dispatch({ type: 'FETCH_USERS_REQUEST' })\n try {\n let { data } = await axios({\n method: 'get',\n url: '/api/users',\n headers: {\n Authorization: `Bearer ${localStorage.getItem('kvk-vb-token')}`,\n },\n })\n dispatch({ type: 'FETCH_USERS_SUCCESS', data })\n } catch (error) {\n console.log(error)\n cb(error)\n }\n}\n\nexport const createUser = (values, cb) => async (dispatch, getState) => {\n try {\n let { data } = await axios({\n method: 'post',\n url: '/api/users',\n headers: {\n Authorization: `Bearer ${localStorage.getItem('kvk-vb-token')}`,\n },\n data: values,\n })\n dispatch({ type: 'NEW_USER_SUCCESS', data })\n } catch (error) {\n console.log(error)\n cb(error)\n }\n}\n\nconst initialState = {\n loaded: false,\n loading: false,\n items: [],\n}\n\nexport default function handleUser(state = initialState, action) {\n switch (action.type) {\n case 'FETCH_USERS_REQUEST':\n return {\n ...state,\n loading: true,\n }\n case 'FETCH_USERS_SUCCESS':\n return {\n ...state,\n items: action.data,\n loading: false,\n loaded: true,\n }\n case 'NEW_USER_SUCCESS':\n return {\n ...state,\n items: [...state.items, action.data],\n }\n default:\n return state\n }\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"dark-form-control-select\":\"resolutions_dark-form-control-select__12Wa2\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"default\":\"FormField_default__sRnyI\",\"check\":\"FormField_check__2Wjr7\",\"radioGroup\":\"FormField_radioGroup__1b3T9\",\"help\":\"FormField_help__2v_XN\"};","import axios from 'axios'\nimport { getAbsoluteRepoUrl } from './url'\n\nexport function not(fn) {\n return (...args) => !fn(...args)\n}\n\nexport function isEmptyObject(obj) {\n return (\n obj &&\n Object.keys(obj).length === 0 &&\n Object.getPrototypeOf(obj) === Object.prototype\n )\n\n}\nconst CancelToken = axios.CancelToken\n\nexport function getSparqlFunction(props)\n{\n return createSparqlFunction2(props);\n}\n\n/*\nexport function loadExternalJS(js)\n{\n \n}\n*/\n\nfunction getUrl(props)\n{\n var ss=getAbsoluteRepoUrl(props.repoURL);\n // console.log(ss);\n return ss;\n} \n\n\nfunction getUrl_old(props) {\n \n try {\n let url = '/api/sparql/' + props.repoURL\n if (props.repoURL.startsWith('http')) {\n // request sparql endpoint directly\n url = props.repoURL\n }\n var modus = false\n if (window.location.host === 'localhost:3000') {\n modus = true\n }\n // var modus=false; //debug\n\n if (\n props.localRepoURL != null &&\n props.localRepoURL !== '' &&\n modus\n ) {\n url = props.localRepoURL\n }\n \n // console.log('returning url :' + url)\n return url\n } catch (e) {\n console.log('error creating url' + e)\n }\n return null\n}\n\nfunction createSparqlFunction2(props) {\n // gebruikt door bb widgets in iframe situation\n var url =getUrl(props)\n var f = function (query, success, errorRV) {\n // console.log(\"query via window top \",query,success,errorRV);\n\n let encodedQuery = encodeURIComponent(query)\n let data = {\n query: query,\n }\n data = 'infer=false&sameAs=false&query=' + encodedQuery\n\n axios.defaults.headers.post['Content-Type'] =\n 'application/x-www-form-urlencoded'\n //axios.defaults.headers.post['Access-Control-Allow-Origin'] ='*';\n axios.defaults.headers.post['Accept']='application/sparql-results+json,*/*;q=0.9'\n //console.log(\"querying with \",query,headers);\n axios.defaults.withCredentials = true\n axios.defaults.credentials = 'include'\n // console.log(\"really sparqling \",query);\n if (document.withCredentials==false)\n {\n axios.defaults.withCredentials = false\n }\n axios({\n method: 'post',\n url,\n data,\n \n cancelToken: new CancelToken((c) => {\n this.cancel = c\n }),\n })\n .then((response) => {\n if (success) {\n success.call(this, response.data)\n }\n })\n .catch((error) => {\n // console.log(error,query);\n if (errorRV) {\n errorRV.call(this, error)\n }\n })\n }\n\n return f;\n}\n","/**\n * Helper class to pre-create references of Promises while allowing the resolve function to be specified at a later time.\n *\n * This is useful when you need the promise to be assigned somewhere whilst constructing it.\n */\nexport class DeferredPromise implements PromiseLike {\n promise: Promise\n\n resolve: (value: (PromiseLike | T)) => void\n reject: (reason?: any) => void\n\n catch: (onrejected?: ((reason: any) => (PromiseLike | TResult)) | undefined | null) => Promise\n then: (onfulfilled?: ((value: T) => (PromiseLike | TResult1)) | undefined | null, onrejected?: ((reason: any) => (PromiseLike | TResult2)) | undefined | null) => Promise\n\n readonly [Symbol.toStringTag] = \"Promise\"\n\n constructor() {\n this[Symbol.toStringTag] = \"Promise\"\n\n // make ts happy\n this.resolve = () => {}\n this.reject = () => {}\n\n this.promise = new Promise((resolve, reject) => {\n // assign the resolve and reject functions to `this`\n // making them usable on the class instance\n this.resolve = resolve\n this.reject = reject\n })\n\n // bind `then` and `catch` to implement the same interface as Promise\n this.then = this.promise.then.bind(this.promise)\n this.catch = this.promise.catch.bind(this.promise)\n }\n}\n","import axios, { isAxiosError } from \"axios\"\nimport { OpaqueSparqlResults } from \"./sparqlResultHelpers\"\nimport { DeferredPromise } from \"./DeferredPromise\"\n\ntype ResultHolder = {\n result: OpaqueSparqlResults\n isLatest: () => boolean\n}\n\ntype QueryString = string\n\ntype TemplateId = string\n\nexport class ErrorNeedAuth extends Error {}\n\nconst state = {\n instances: new Map(),\n cache: new Map()\n}\n\ntype LastFetchRequest = {\n query: string\n promise: PromiseLike\n}\n\nexport class SparqlTemplate {\n lastRequest: LastFetchRequest | null = null\n sparqlEndpoint: string\n cancelActiveRequest: null | (() => void) = null\n\n constructor(sparqlEndpoint: string, templateId: TemplateId) {\n this.sparqlEndpoint = sparqlEndpoint\n state.instances.set(templateId, this)\n }\n\n async fetch(query: QueryString): Promise {\n if (this.lastRequest?.query === query) {\n return this.lastRequest.promise\n }\n\n const promise = new DeferredPromise()\n this.lastRequest = { query, promise }\n\n const isLatest = () => promise === this?.lastRequest?.promise\n this.cancelActiveRequest?.()\n\n if (state.cache.has(query)) {\n const cachedResults = state.cache.get(query)\n if (!cachedResults) throw new Error('Cache problem!')\n setTimeout(() => promise.resolve({ isLatest, result: cachedResults }), 10)\n return promise\n }\n\n try {\n const data = new URLSearchParams()\n data.set('infer', String(false))\n data.set('sameAs', String(false))\n data.set('query', query)\n\n const response = await axios({\n method: 'post',\n url: this.sparqlEndpoint,\n maxContentLength: Infinity,\n maxBodyLength: Infinity,\n data,\n // @ts-ignore\n withCredentials: document.withCredentials ?? true,\n headers:{\n Accept: 'application/sparql-results+json,*/*;q=0.9',\n 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'\n },\n cancelToken: new axios.CancelToken((c) => this.cancelActiveRequest = c),\n })\n\n const match = query.match(/#\\s*artificially-slow-query\\s*=\\s*([0-9]+)/)\n if (match) {\n await waitFor(parseInt(match[1]))\n }\n\n this.cancelActiveRequest = null\n const result = response.data\n\n if (shouldCacheQuery(query)) {\n state.cache.set(query, result)\n }\n\n promise.resolve({\n isLatest,\n result\n })\n return promise\n } catch (error) {\n if (isAxiosError(error) && (error.response?.status === 401 || error.response?.status === 403))\n throw new ErrorNeedAuth()\n throw error\n }\n }\n}\n\nasync function waitFor(ms: number): Promise {\n return new Promise(resolve => {\n setTimeout(() => resolve(), ms)\n })\n}\n\nfunction shouldCacheQuery(query: QueryString) {\n return !query.includes(\"#nocache\")\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"button\":\"Button_button__13Gds\",\"primary\":\"Button_primary__2ugne\",\"info\":\"Button_info__2lxHJ\",\"outline\":\"Button_outline__1EONj\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"main\":\"RadioBox_main__OWVGX\",\"label\":\"RadioBox_label__xmETg\",\"radioContainerHor\":\"RadioBox_radioContainerHor__1iRy5\",\"radioContainerVer\":\"RadioBox_radioContainerVer__R820_\",\"rows\":\"RadioBox_rows__2dSeK\",\"row\":\"RadioBox_row__26El2\"};","import { resolveTemplateString, TEMPLATE_PLACEHOLDER_REGEX } from \"./resolve-template-string\";\nimport { runStartRule } from \"./run-start-rule\"\n\nexport function timestamp(\n publish: (topic: string, value: unknown) => void,\n varNamesCommaSeparated: string | null | undefined,\n pubsub: Record,\n) {\n PublishUtils.setTimeStampParameter({\n props: {pubsub, publish, timestampParameters: varNamesCommaSeparated}\n }, true)\n}\n\nclass PublishUtils {\n static resetUri=\"http://www.buildingbits.nl/reset\";\n \n static setTimeStampParameter(widget: {\n props: {\n pubsub: Record\n publish: (topic: string, value: unknown) => void\n timestampParameters: string | null | undefined\n }\n }, debug: boolean = false)\n {\n if (debug) {\n console.log(\n 'timestamp parameter called ',\n widget.props.timestampParameters\n )\n }\n if (widget.props.timestampParameters) {\n var valuesRaw = widget.props.timestampParameters\n var values = valuesRaw.split(',')\n var me = widget\n var value = 'time:' + Date.now()\n if (debug) console.log(values, value)\n\n if (values.length > 0) {\n if (debug) console.log(values[0],widget.props.pubsub[values[0]])\n if (\n // widget.props.pubsub[values[0]] != null &&\n widget.props.pubsub[values[0]] !== value\n ) {\n //console.log(widget);\n setTimeout(function () {\n // console.log('resetting parameter 1 ' + values[0], value)\n widget.props.publish(values[0], value)\n }, 25)\n }\n // data[values[n]]=\"http://www.buildingbits.nl/reset\";\n }\n if (values.length > 1) {\n if (\n widget.props.pubsub[values[1]] != null &&\n widget.props.pubsub[values[1]] !== value\n ) {\n setTimeout(function () {\n console.log('resetting parameter 2 ' + values[1])\n me.props.publish(values[1], value)\n }, 50)\n }\n }\n if (values.length > 2) {\n if (\n widget.props.pubsub[values[2]] != null &&\n widget.props.pubsub[values[2]] !== value\n ) {\n setTimeout(function () {\n console.log('resetting parameter 3 ' + values[2])\n me.props.publish(values[2], value)\n }, 75)\n }\n }\n if (values.length > 3) {\n if (\n widget.props.pubsub[values[3]] != null &&\n widget.props.pubsub[values[3]] !== value\n ) {\n setTimeout(function () {\n console.log('resetting parameter 4 ' + values[3])\n me.props.publish(values[3], value)\n }, 100)\n }\n }\n if (values.length > 4) {\n if (\n widget.props.pubsub[values[4]] != null &&\n widget.props.pubsub[values[4]] !== value\n ) {\n setTimeout(function () {\n console.log('resetting parameter 5 ' + values[4])\n me.props.publish(values[4], value)\n }, 125)\n }\n }\n if (values.length > 5) {\n console.log('too many properties to reset')\n alert('too many properties to reset in search box')\n }\n\n if (debug) {\n console.log('reset parameter called for ', values)\n }\n }\n }\n\n static publish(props: {\n dispatch: (value: unknown) => void\n }, key: string, value: unknown) {\n var data = { key: value };\n\n props.dispatch({\n type: \"PUBLISH\",\n data: data\n });\n }\n\n\n\n\n static getResetValueDef() {\n return {\n name: 'resetValues',\n type: 'text',\n label:\n 'reset this parameter after select event. multiple parameters via comma seperation',\n }\n }\n static getRunRuleParametersDef()\n {\n return {\n name: 'ruleTagAfterSubmit',\n type: 'text',\n label: 'run rule with tag after succesful submit',\n };\n }\n\n static getRunRuleOptionalParametersDef()\n {\n return {\n name: 'ruleparameters',\n type: 'json',\n label: 'extra json values',\n };\n }\n\n\n \n\n static async runRule(widget:any,json:any)\n { \n //console.log(\"run rule json\",json);\n const parsedObject: Record = {};\n\n for (const key in json) {\n if (typeof json[key] === 'string') {\n parsedObject[key] = json[key];\n } else {\n console.log(`Invalid value for key ${key}: expected a string.`);\n }\n }\n // console.log(parsedObject,json)\n\n const rule =widget.props.ruleTagAfterSubmit\n if (!rule) return;\n \n await runStartRule(rule, widget.props.parameters,parsedObject)\n }\n \n\n static getTimestampParametersDef() {\n return {\n name: 'timestampParameters',\n type: 'text',\n label:\n 'sets a timestamp after main event. multiple parameters via comma seperation',\n }\n }\n\n static async resetParameter(widget: {\n props: {\n pubsub: Record\n publish: (topic: string, value: unknown) => void\n resetValues: string | null | undefined\n }\n }, debug = false): Promise {\n if (debug) {\n console.log('reset parameter called', widget.props.resetValues)\n }\n if (!widget.props.resetValues) return\n\n const resetParametersRaw = widget.props.resetValues\n const resetParameters = resetParametersRaw.split(',')\n const resetValue = 'http://www.buildingbits.nl/reset'\n\n const promises = []\n for (const resetParameter of resetParameters) {\n const currentValue = widget.props.pubsub[resetParameter]\n if (currentValue == null || currentValue === resetValue) continue\n promises.push(setTimeoutAsync(() => {\n console.log(`resetting parameter: ${resetParameter}`)\n widget.props.publish(resetParameter, resetValue)\n }, 25))\n }\n\n return Promise.all(promises)\n }\n\n static removeUnresolvedParametersFromString(value:string|\"\") {\n return value.replace(TEMPLATE_PLACEHOLDER_REGEX, \"\")\n }\n\n static processStringForParameters(widget: {\n props: {\n pubsub: Record\n }\n }, strTemplate: string | null | undefined) {\n if (!strTemplate) return \"\"\n\n try {\n return resolveTemplateString(strTemplate, widget.props.pubsub)\n } catch(e) {\n console.log(`${widget}:\\n\\n${e}\\n\\n`)\n return strTemplate\n }\n }\n\n static emptyDataParameterChange(widget: {\n props: {\n pubsub: Record\n resetDataProps: string | null | undefined\n }\n }, arg: any, arg2: any) {\n if (widget.props.resetDataProps) {\n if (arg.data != null) {\n console.log(widget.props.pubsub.button, arg.pubsub.button)\n console.log(widget, arg, arg2)\n }\n }\n }\n\n static getEmptyDataParameterChange() {\n return {\n name: 'resetDataProps',\n type: 'text',\n label:\n 'reset data value when this parameter changes. multiple parameters via comma seperation',\n } as const\n }\n\n /**\n * Converts a list of values to a single value string according to multipleselectparametertype\n */\n static getListAsSingleValue(multipleselectparametertype: \"csvuri\" | \"csvstring\" | \"valuestring\" | \"valueuri\" | \"json\" | null | undefined, list: Array) {\n const record: Record = {}\n list.forEach(item => record[item] = true)\n return PublishUtils.getMultiplePropValueAsSingleValue(multipleselectparametertype, record)\n }\n\n /**\n * Converts a record holding multiple values to a single value string according to multipleselectparametertype\n */\n static getMultiplePropValueAsSingleValue(multipleselectparametertype: \"csvuri\" | \"csvstring\" | \"valuestring\" | \"valueuri\" | \"json\" | null | undefined, values: Record)\n {\n if (multipleselectparametertype === \"json\") {\n if (values == null) return JSON.stringify([])\n\n const list = []\n for (let key in values) {\n const enabled = values[key]\n if (!enabled) continue\n list.push(key)\n }\n\n return JSON.stringify(list)\n }\n\n let valueString = ''\n let komma = ''\n let pre = '<'\n let end = '>'\n let kommaT = ','\n if (multipleselectparametertype === 'csvstring') {\n pre = '\"'\n end = pre\n }\n if (multipleselectparametertype === 'valuestring') {\n pre = '(\"'\n end = '\") '\n kommaT = ''\n }\n if (multipleselectparametertype === 'valueuri') {\n pre = '(<'\n end = '>) '\n kommaT = ''\n }\n if (values==null)\n {\n return this.getEmptyMultiplePropValueAsSingleValue(multipleselectparametertype);\n }\n for (let n in values) {\n if (values[n]) {\n valueString += komma + pre + n + end\n komma = kommaT\n }\n }\n // console.log(valueString);\n if (valueString === '') valueString=this.getEmptyMultiplePropValueAsSingleValue(multipleselectparametertype);\n return valueString;\n }\n\n /**\n * Parses multiple values from multiplePropValue according to multipleSelectParameterType\n */\n static parseMultiplePropValue(multipleSelectParameterType: \"csvuri\" | \"csvstring\" | \"valuestring\" | \"valueuri\" | \"json\" | null | undefined, multiplePropValue: string) {\n if (multipleSelectParameterType === \"json\") {\n return JSON.parse(multiplePropValue)\n }\n\n const escapeChar = '\\\\'\n\n const formatDict = {\n csvuri: { prefix: '<', postfix: '>', separator: ',' },\n csvstring: { prefix: '\"', postfix: '\"', separator: ',' },\n valuestring: { prefix: '(\"', postfix: '\")', separator: ' ' },\n valueuri: { prefix: '(<', postfix: '>)', separator: ' ' },\n }\n\n const { prefix, postfix, separator } = formatDict[multipleSelectParameterType ?? \"csvuri\"]\n multiplePropValue = multiplePropValue.split(separator).map(item => item.trim()).join(separator)\n\n const after = (lookingFor: 'prefix' | 'value' | 'postfix' | 'separator') => {\n if (lookingFor === 'prefix') return 'value'\n if (lookingFor === 'value' && postfix === '') return 'separator'\n if (lookingFor === 'value') return 'postfix'\n if (lookingFor === 'postfix' && separator === '') return 'prefix'\n if (lookingFor === 'postfix') return 'separator'\n if (lookingFor === 'separator' && prefix === '') return 'value'\n if (lookingFor === 'separator') return 'prefix'\n throw new Error(`unknown value for \"lookingFor\": ${lookingFor}`)\n }\n\n /**\n * parses char as part of symbol and pushes that onto parsed\n */\n const parseSymbolIntoParsed = (parsed: string, char: string, symbol: string) => {\n const expectedChar = symbol[parsed.length]\n if (char !== expectedChar) {\n console.log({char, expectedChar, symbol, parsedLength: parsed.length})\n throw new Error(`${char} was expected to be part of ${symbol} as ${multipleSelectParameterType} in ${multiplePropValue}`)\n }\n parsed += char\n return parsed\n }\n\n type ParserState = {\n currentEscapeChar?: string\n values: string[]\n parsed: string\n lookingFor: 'prefix' | 'value' | 'postfix' | 'separator'\n }\n\n const initialParserState: ParserState = { values: [], parsed: '', lookingFor: after('separator') }\n const { values } = Array.from(multiplePropValue).reduce((currentState: ParserState, char): ParserState => {\n let { currentEscapeChar, values, parsed, lookingFor } = currentState\n try {\n\n if (lookingFor === 'prefix') {\n parsed = parseSymbolIntoParsed(parsed, char, prefix)\n if (parsed.length === prefix.length) return { values, parsed: '', lookingFor: after('prefix') }\n return { values, parsed, lookingFor }\n }\n\n if (lookingFor === 'value') {\n if (!currentEscapeChar && char === escapeChar)\n return { currentEscapeChar: char, values, parsed, lookingFor }\n\n if (currentEscapeChar || char !== postfix[0]) {\n parsed += char\n return { values, parsed, lookingFor }\n }\n\n values.push(parsed)\n parsed = ''\n lookingFor = after('value')\n }\n\n if (lookingFor === 'postfix') {\n parsed = parseSymbolIntoParsed(parsed, char, postfix)\n if (parsed.length === postfix.length) return { values, parsed: '', lookingFor: after('postfix') }\n return { values, parsed, lookingFor }\n }\n\n if (lookingFor === 'separator') {\n parsed = parseSymbolIntoParsed(parsed, char, separator)\n if (parsed.length === separator.length) return { values, parsed: '', lookingFor: after('separator') }\n return { values, parsed, lookingFor }\n }\n\n } catch(e) {\n // @ts-ignore\n const errorMessage = e.message\n throw new Error(errorMessage + '\\n\\n' + JSON.stringify({ values, parsed, lookingFor, char }))\n }\n\n throw new Error(`unknown value for \"lookingFor\": ${lookingFor}`)\n }, initialParserState)\n\n return values\n }\n\n static getEmptyMultiplePropValueAsSingleValue(multipleselectparametertype: \"csvuri\" | \"csvstring\" | \"valuestring\" | \"valueuri\" | \"json\" | null | undefined)\n {\n if (multipleselectparametertype === \"json\") {\n return JSON.stringify([])\n }\n\n let valueString = ''\n let value='';\n let pre = '<'\n let end = '>'\n // let kommaT = ','\n if (multipleselectparametertype === 'csvstring') {\n pre = '\"'\n end = pre\n }\n if (multipleselectparametertype === 'valuestring') {\n pre = '(\"'\n end = '\") '\n // kommaT = ''\n }\n if (multipleselectparametertype === 'valueuri') {\n pre = '(<'\n end = '>) '\n // kommaT = ''\n value='http://www.buildingbits.nl/reset';\n }\n\n \n valueString = pre + value + end\n \n \n // console.log(valueString);\n // if (valueString === '') valueString = '';\n return valueString;\n }\n\n static getMultipleValueFormatOptions({\n name = 'multipleselectparametertype',\n label = 'for Multiple selection only: how to set the multivalue parameters'\n }: {\n name?: string\n label?: string\n } = {}) {\n return {\n name,\n type: 'select',\n options: [\n { label: 'csv as uri', value: 'csvuri' },\n { label: 'csv as string with \"', value: 'csvstring' },\n { label: 'sparql value string with \"', value: 'valuestring' },\n { label: 'sparql value uri', value: 'valueuri' },\n { label: 'JSON array', value: 'json' }\n ],\n label\n } as const\n }\n}\n\nfunction setTimeoutAsync(callback: () => T, delay: number): Promise {\n return new Promise((resolve, reject) => {\n setTimeout(() => {\n try {\n resolve(callback())\n } catch (e) {\n reject(e)\n }\n }, delay)\n })\n}\n\nexport default PublishUtils\n","export default __webpack_public_path__ + \"static/media/plus.d2c8885b.svg\";","export default __webpack_public_path__ + \"static/media/cross.53a62fd9.svg\";","import { Suspense, ReactNode } from 'react'\nimport Spinner from './Spinner'\nimport css from './Loader.module.css'\n\ntype Props = {\n active: boolean\n children?: ReactNode | undefined\n}\n\nexport function Loader(props: Props) {\n return (\n \n }>\n \n {props.children}\n \n \n )\n}\n\nfunction LoadingOverlay(props: Props) {\n return (\n <>\n {props.active && (\n
\n \n
\n )}\n {props.children}\n \n )\n}\n","import { Component, cloneElement } from 'react'\nimport axios from 'axios'\nimport isEqual from 'lodash/isEqual'\nimport debounce from 'lodash/debounce'\nimport { connect } from 'react-redux'\nimport { toast } from 'react-toastify'\nimport { Loader } from './Loader'\nimport { getCgiUrl } from '../helpers/url'\nimport { ErrorNeedAuth, SparqlTemplate } from \"../helpers/SparqlManager\"\nimport { NoPlaceholderValueError, resolveTemplateString } from '../helpers/resolve-template-string'\n\nconst SparqlClient = require('sparql-http-client/SimpleClient')\n\naxios.defaults.timeout = 250000; \n\nconst CancelToken = axios.CancelToken\n\nclass Widget extends Component {\n constructor(props) {\n super(props)\n this.resolveTemplateVariableInQueryDebounce = debounce(\n this.resolveTemplateVariableInQuery,\n 2000\n )\n this.useLoadingWidget = false\n if (window.top.url == null) {\n this.createSparqlFunction()\n }\n\n const endpoint = getCgiUrl('sparql', this.props.repoName, this.props.repoURL, this.props.localRepoURL)\n this.sparql = new SparqlTemplate(endpoint, this.props.widgetId)\n }\n\n lastQuery = undefined\n state = {\n loading: false,\n }\n\n getUrl() {\n try {\n let url = '/api/sparql/' + this.props.repoURL\n if (this.props.repoURL.startsWith('http')) {\n // request sparql endpoint directly\n url = this.props.repoURL\n }\n var modus = false\n if (window.location.host === 'localhost:3000') {\n modus = true\n }\n // var modus=false; //debug\n\n if (\n this.props.localRepoURL != null &&\n this.props.localRepoURL !== '' &&\n modus\n ) {\n url = this.props.localRepoURL\n }\n window.top.url = url\n try { document.url=url } catch(e){}\n // console.log('returning url :' + url)\n return url\n } catch (e) {\n console.log('error creating url' + e)\n }\n return null\n }\n\n createSparqlFunction2() {\n // gebruikt door bb widgets in iframe situation\n var url = this.getUrl()\n window.top.query = async function (query, success, errorRV) {\n // console.log(\"query via window top \",query,success,errorRV);\n\n let encodedQuery = encodeURIComponent(query)\n let data = {\n query: query,\n }\n data = 'infer=false&sameAs=false&query=' + encodedQuery\n\n axios.defaults.headers.post['Content-Type'] =\n 'application/x-www-form-urlencoded'\n //axios.defaults.headers.post['Access-Control-Allow-Origin'] ='*';\n\n //console.log(\"querying with \",query,headers);\n\n \n \n if (document.withCredentials==null) {document.withCredentials=true}\n\n axios.defaults.withCredentials = document.withCredentials;\n if (document.withCredentials !=false)\n {\n axios.defaults.credentials = 'include'\n }\n \n \n if ( !( (success==null) && (errorRV==null)) ) \n {\n var r=axios({ method: 'post', url, data, maxContentLength: Infinity,\n maxBodyLength: Infinity, headers:{ Accept: 'application/sparql-results+json' }, cancelToken: new CancelToken((c) => { this.cancel = c }), }); \n \n r.then((response) => {\n if (success) {\n success.call(this, response.data)\n }\n })\n .catch((error) => {\n // console.log(error,query);\n if (errorRV) {\n errorRV.call(this, error)\n }\n })\n }\n \n \n else\n {\n console.log(\"run await version\");\n // var r= await axios({ method: 'post', url, data, headers:{ Accept: 'application/sparql-results+json' }, cancelToken: new CancelToken((c) => { this.cancel = c }), }).catch(err => false);; \n var r= await axios.post(url,data,{ maxContentLength: Infinity,\n maxBodyLength: Infinity, headers:{ Accept: 'application/sparql-results+json' }, cancelToken: new CancelToken((c) => { this.cancel = c }), });; \n \n \n return r;\n }\n }\n \n\n this.sparqlQuery = window.top.query;\n \n }\n\n createSparqlFunction() {\n // gebruikt door bb widgets in iframe situation\n\n if (true) {\n this.createSparqlFunction2()\n return\n }\n var endpointUrl = this.getUrl()\n window.top.query = async function (query, success, errorRV) {\n try {\n const client = new SparqlClient({ endpointUrl,headers:{\n Accept: 'application/sparql-results+json'\n } })\n \n const stream = await client.query.select(query, {\n operation: 'postUrlencoded',\n })\n var data = await stream.json()\n\n if (success) {\n success.call(this, data)\n }\n } catch (e) {\n console.log(e)\n if (errorRV != null) {\n errorRV.call(this, 'error sparql endpoint')\n }\n }\n }\n }\n\n runJSInQuery(query) {\n try {\n if (query == null) return null\n let b = query.includes('')\n let evalcode = codeQuery[0]\n // console.log(code,n,evalcode);\n let evalCode2 ='';\n try\n {\n evalCode2 = new Function(evalcode)() //eslint-disable-line no-new-func\n }\n catch(e)\n {\n console.log(\"cannot execute js code \",evalcode,e)\n }\n \n if (evalCode2 == null) {\n evalCode2 = ''\n }\n let subQuery2 = codeQuery[1]\n nquery += evalCode2 + subQuery2\n }\n // console.log('returning ', nquery)\n return nquery\n }\n } catch (error) {\n console.error('error parsing js in query ', error, query)\n }\n\n return query\n }\n\n async loadData(originalQuery, countRetries = 0) {\n if (countRetries > 1) return console.error('retried this already')\n\n if (!this.props.repoURL) return console.error('Repo URL is not set!')\n if (!originalQuery) return\n\n const query = this.runJSInQuery(originalQuery)\n\n if (countRetries === 0) {\n this.setLoading(true)\n this.setState({ message: null })\n }\n\n try {\n const response = await this.sparql.fetch(query)\n if (!response.isLatest()) return\n\n this.setState({ data: response.result })\n this.setLoading(false)\n } catch(error) {\n if (error instanceof axios.CanceledError) {\n return\n }\n\n if (error instanceof ErrorNeedAuth) {\n const auth = await this.props.reauth()\n if (!auth.success) {\n auth.goToLoginPage()\n return\n }\n return this.loadData(originalQuery)\n }\n\n console.error(error)\n return this.loadData(originalQuery, countRetries + 1)\n }\n }\n\n /**\n * @param changedPublishProps {string[]|null}\n */\n resolveTemplateVariableInQuery = (changedPublishProps) => {\n if (this.props.withinSelectedTab === false) return // geen queries uitvoeren voor niet zichtbare tabs\n if (!this.props.query) return\n\n try {\n const query = resolveTemplateString(this.props.query, this.props.pubsub, changedPublishProps)\n if (query === this.lastQuery) return\n\n this.lastQuery = query\n this.loadData(query)\n } catch(e) {\n if (e instanceof NoPlaceholderValueError) return this.setState({ message: '' }) //message: `Kies een ${subscribeProp}`\n console.error(e)\n }\n }\n\n componentDidMount() {\n let variables = this.props.definition.variables\n let queryDefinition =\n variables && variables.find((variable) => variable.name === 'query')\n if (!queryDefinition) return\n if (this.props.withinSelectedTab === false) return\n this.resolveTemplateVariableInQuery()\n }\n\n componentDidUpdate(prevProps) {\n let variables = this.props.definition.variables\n let queryDefinition =\n variables && variables.find((variable) => variable.name === 'query')\n if (!queryDefinition) return\n\n if (prevProps.repoURL !== this.props.repoURL) {\n this.resolveTemplateVariableInQueryDebounce()\n } else if (this.props.withinSelectedTab !== prevProps.withinSelectedTab) {\n // if (this.props.withinSelectedTab && !this.state.data){\n if (this.props.withinSelectedTab) {\n this.resolveTemplateVariableInQuery()\n }\n } else if (prevProps.query !== this.props.query) {\n this.resolveTemplateVariableInQuery()\n } else if (!isEqual(prevProps.pubsub, this.props.pubsub)) {\n let changedPublishProps = []\n\n Object.keys(this.props.pubsub).forEach((key) => {\n if (prevProps.pubsub[key] !== this.props.pubsub[key]) {\n changedPublishProps.push(key)\n }\n })\n\n this.resolveTemplateVariableInQuery(changedPublishProps)\n }\n }\n\n publishMultipleValues=(prop_value)=>\n this.props.dispatch({ type: 'PUBLISH', data: prop_value })\n\n publish = (prop, value) =>\n this.props.dispatch({ type: 'PUBLISH', data: { [prop]: value } })\n\n /**\n * @param loading {boolean}\n */\n setLoading = loading => {\n this.setState({ loading })\n\n if (this.props.voteForUserActionsDisabledWhenLoading) {\n this.props.voteForUserActionsDisabled(loading)\n }\n }\n\n /**\n * @param loading {boolean}\n */\n setLoadingFromWidget = loading => {\n /*\n * This setTimeout was taken from existing code and its purpose is unclear.\n * It may indicate a potential code problem or may not be needed at all.\n * Further investigation is required to determine if it should be removed.\n */\n setTimeout(() => {\n this.setLoading(loading)\n }, 0);\n }\n\n sendNotification = (msg) => toast(msg)\n\n render() {\n if (this.state == null) return null\n\n const { children, ...propsWithoutChildren } = this.props\n return (\n \n {cloneElement(children, {\n ...this.state,\n ...propsWithoutChildren,\n setLoading: this.setLoadingFromWidget,\n publish: this.publish,\n publishMultipleValues:this.publishMultipleValues,\n sendNotification: this.sendNotification,\n closeDialog2:this.props.closeDialog,\n })}\n \n )\n }\n}\n\nconst mapStateToProps = function (state) {\n return {\n layoutName: state.project.layoutName,\n pubsub: state.pubsub\n }\n}\n\nexport default connect(mapStateToProps)(Widget)","import React from \"react\"\nimport styles from \"./WidgetWrapper.module.css\"\nimport clsx from \"clsx\"\n\ntype Props = {\n userActionsDisabled: boolean\n clickable: boolean\n children: React.ReactNode\n} & React.HTMLAttributes\n\nexport function WidgetWrapper(props: Props) {\n const { userActionsDisabled, clickable, ...otherProps } = props\n return (\n
\n {props.children}\n
\n )\n}\n","import { styled, Tooltip as MuiTooltip, tooltipClasses, TooltipProps } from \"@mui/material\"\n\nexport const LargeTooltip = styled(({ className, ...props }: TooltipProps) => (\n \n))(() => ({\n [`& .${tooltipClasses.tooltip}`]: {\n fontSize: '0.875rem',\n fontWeight: 500,\n textTransform: 'uppercase',\n padding: '.75em 1em'\n }\n}))\n","import * as React from \"react\"\nimport { type DialogProps } from \"@radix-ui/react-dialog\"\nimport { MagnifyingGlassIcon } from \"@radix-ui/react-icons\"\nimport { Command as CommandPrimitive } from \"cmdk\"\n\nimport { Dialog, DialogContent } from \"./dialog\"\nimport { mergeClasses } from \"../../helpers/styling\"\n\nconst Command = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nCommand.displayName = CommandPrimitive.displayName\n\ninterface CommandDialogProps extends DialogProps {}\n\nconst CommandDialog = ({ children, ...props }: CommandDialogProps) => {\n return (\n \n \n \n {children}\n \n \n \n )\n}\n\nconst CommandInput = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n
\n \n \n
\n))\n\nCommandInput.displayName = CommandPrimitive.Input.displayName\n\nconst CommandList = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\n\nCommandList.displayName = CommandPrimitive.List.displayName\n\nconst CommandEmpty = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>((props, ref) => (\n \n))\n\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName\n\nconst CommandGroup = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\n\nCommandGroup.displayName = CommandPrimitive.Group.displayName\n\nconst CommandSeparator = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName\n\nconst CommandItem = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\n\nCommandItem.displayName = CommandPrimitive.Item.displayName\n\nconst CommandShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes) => {\n return (\n \n )\n}\nCommandShortcut.displayName = \"CommandShortcut\"\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n}\n","import * as React from \"react\"\nimport { Check, ChevronsUpDown } from \"lucide-react\"\n\nimport { mergeClasses } from \"../../helpers/styling\"\nimport { Button } from \"./button\"\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from \"./command\"\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"./popover\"\n\n\nexport type ComboboxOption = {\n label: string\n value: string\n}\n\nexport function SearchSelect(props: {\n value: string\n onChange?: (value: string) => void\n options: ComboboxOption[]\n placeholder?: string\n noResultsLabel?: string\n buttonClassName?: string\n contentClassName?: string\n}) {\n const [open, setOpen] = React.useState(false)\n\n return (\n \n \n \n {props.value\n ? props.options.find((option) => option.value === props.value)?.label\n : (props.placeholder ?? 'Select an option...')}\n \n \n \n \n \n \n \n {props.noResultsLabel ?? 'No options found'}\n \n {props.options.map((option) => (\n {\n props.onChange?.(currentValue === props.value ? \"\" : currentValue)\n setOpen(false)\n }}\n >\n \n {option.label}\n \n ))}\n \n \n \n \n \n )\n}\n","import * as React from \"react\"\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\"\nimport {mergeClasses} from \"../../helpers/styling\"\n\nconst Tabs = TabsPrimitive.Root\n\nconst TabsList = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nTabsList.displayName = TabsPrimitive.List.displayName\n\nconst TabsTrigger = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName\n\nconst TabsTriggerAlt = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nTabsTriggerAlt.displayName = TabsPrimitive.Trigger.displayName\n\nconst TabsContent = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nTabsContent.displayName = TabsPrimitive.Content.displayName\n\nexport { Tabs, TabsList, TabsTrigger, TabsTriggerAlt, TabsContent }\n","import * as React from \"react\"\nimport * as SwitchPrimitives from \"@radix-ui/react-switch\"\nimport { mergeClasses } from \"../../helpers/styling\"\n\nconst Switch = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n \n \n))\nSwitch.displayName = SwitchPrimitives.Root.displayName\n\nexport { Switch }\n","import * as React from \"react\"\nimport { CaretSortIcon, CheckIcon } from \"@radix-ui/react-icons\"\n\nimport { Button } from \"./button\"\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from \"./command\"\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"./popover\"\nimport { mergeClasses } from \"../../helpers/styling\"\n\n/**\n * Inspired by https://ui.shadcn.com/docs/components/combobox\n */\nexport function InputWithSuggestions(props: {\n selected?: T, suggestions: T[], placeholder: string,\n select: (value: string) => void, noSuggestionsPlaceholder: string,\n}) {\n const [input, setInput] = React.useState(props.selected ?? '')\n const [open, setOpen] = React.useState(false)\n\n const suggestionsWithCurrentInput =\n props.suggestions.some(suggestion => suggestion === input) || !input.length\n ? props.suggestions\n : [input, ...props.suggestions]\n\n return (\n \n \n \n {props.suggestions.find(suggestion => suggestion === props.selected)\n ?? props.placeholder}\n \n \n \n \n \n \n \n {props.noSuggestionsPlaceholder}\n {suggestionsWithCurrentInput.map((suggestion) => (\n {\n props.select(value)\n setOpen(false)}\n }>\n {suggestion}\n \n ))}\n \n \n \n \n \n )\n}\n","export function parseSparqlParams(query: string): string[] {\r\n let params: string[] = []\r\n let inSelect = false\r\n let inParentheses = 0\r\n let lastAliasParam: string | null = null\r\n let insideAlias = false\r\n\r\n const tokens = query\r\n .replace(/\\r?\\n/g,' ')\r\n .match(/\\(|\\)|\\?[\\w]+|as|\\*|\\w+|[\"'][^\"']*[\"']|SELECT|WHERE|{|}/gi)\r\n\r\n if (!tokens) return []\r\n\r\n for (const token of tokens) {\r\n if (token.toUpperCase() === 'SELECT') {\r\n inSelect = true\r\n continue\r\n }\r\n\r\n if (token.toUpperCase() === 'WHERE' || token === '{') {\r\n break\r\n }\r\n\r\n if (inSelect) {\r\n if (token === '*') {\r\n return []\r\n }\r\n if (token === '(') {\r\n inParentheses++\r\n if (!insideAlias) {\r\n insideAlias = true\r\n lastAliasParam = null\r\n }\r\n } else if (token === ')') {\r\n inParentheses--\r\n if (inParentheses === 0) {\r\n insideAlias = false\r\n if (lastAliasParam) {\r\n params.push(lastAliasParam)\r\n }\r\n }\r\n } else if (token.startsWith('?')) {\r\n const param = token.replace('?', '')\r\n if (insideAlias) {\r\n lastAliasParam = param\r\n } else {\r\n params.push(param)\r\n }\r\n }\r\n }\r\n }\r\n\r\n return params\r\n}\r\n\r\n// Poor man's testing framework\r\nconst runTest = false\r\nif (runTest) {\r\n const cases = [\r\n {\r\n query: `\r\n SELECT (\"user\" as ?user)\r\n (?someone as ?friend)\\r\\n\r\n ?something\r\n (\"cool\" as ?isCool)\r\n (\"\" as ?icon)\r\n ?nice\r\n WHERE { ?s ?p ?o . }`,\r\n expected: 'user friend something isCool icon nice'\r\n },\r\n {\r\n query: `\r\n SELECT ?one ?two ?three\r\n ?four { ?five ?six ?seven . }`,\r\n expected: 'one two three four'\r\n },\r\n {\r\n query: 'SELECT (?var as ?alias) ?realParam WHERE { ?s ?p ?o . }',\r\n expected: 'alias realParam'\r\n },\r\n {\r\n query: 'select (?another as ?a) ?b ?c { { ?s1 ?p1 ?o1 . } union { ?s2 ?p2 ?o2 . }}',\r\n expected: 'a b c'\r\n },\r\n {\r\n query: 'select * where { ?s ?p ?o . } ',\r\n expected: ''\r\n }\r\n ]\r\n\r\n for (let i = 0; i < cases.length; i++) {\r\n const test = cases[i]\r\n const actual = parseSparqlParams(test.query).join(' ');\r\n const passed = actual === test.expected;\r\n console.log(`parseSparqlParams test ${i + 1} ${passed ? 'PASS' : 'FAIL'}`, {\r\n query: test.query,\r\n expected: test.expected,\r\n actual: actual\r\n })\r\n }\r\n}\r\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { mergeClasses } from \"../../helpers/styling\"\n\nconst alertVariants = cva(\n \"relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground\",\n {\n variants: {\n variant: {\n default: \"bg-background text-foreground\",\n destructive:\n \"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nconst Alert = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes & VariantProps\n>(({ className, variant, ...props }, ref) => (\n \n))\nAlert.displayName = \"Alert\"\n\nconst AlertTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes\n>(({ className, ...props }, ref) => (\n \n))\nAlertTitle.displayName = \"AlertTitle\"\n\nconst AlertDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes\n>(({ className, ...props }, ref) => (\n \n))\nAlertDescription.displayName = \"AlertDescription\"\n\nexport { Alert, AlertTitle, AlertDescription }\n","export function mapRecordToList\n , K extends keyof R, V extends R[K], MappedValue>\n (record: R, map: (key: K, value: V) => MappedValue)\n{\n const list = []\n for (const key in record) {\n const value = record[key]\n const mappedValue = map(key as unknown as K, value)\n list.push(mappedValue)\n }\n return list\n}\n\nexport function forEachEntry\n , K extends keyof R, V extends R[K]>\n (record: R, fn: (key: K, value: V) => void)\n{\n for (const key in record) {\n const value = record[key]\n fn(key as unknown as K, value)\n }\n}","import React from 'react'\nimport {z} from 'zod'\n\nimport {useSelector} from '../../../../store'\n\nimport {JsonEditor} from '../../../JsonEditor'\nimport {Tabs, TabsContent, TabsList, TabsTriggerAlt} from '../../../ui-primitives/tabs'\nimport {Cross2Icon, SymbolIcon, PlusIcon, Link2Icon, LinkBreak2Icon, PlayIcon} from '@radix-ui/react-icons'\nimport {Label} from '../../../ui-primitives/label'\nimport {Input} from '../../../ui-primitives/input'\nimport {Switch} from '../../../ui-primitives/switch'\nimport {Button} from '../../../ui-primitives/button'\nimport {InputWithSuggestions} from '../../../ui-primitives/input-with-suggestions'\n\nimport {DndContext, PointerSensor, UniqueIdentifier, useSensor, useSensors} from '@dnd-kit/core'\nimport {arrayMove, SortableContext} from '@dnd-kit/sortable'\nimport {SortableItem} from '../../../sortable/sortable-item'\nimport {Tooltip} from '@mui/material'\nimport {parseSparqlParams} from '../../../../utils/parse-sparql-params'\nimport { Draft, produce } from 'immer'\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '../../../ui-primitives/select'\nimport { Alert, AlertDescription } from '../../../ui-primitives/alert'\nimport {actionColumnConfigSchema, ColumnConfig, createDefaultActionColumnConfig, CUSTOM_COMBINATION_PATH,\n EditableColumnConfig, getDefaultEditableColumnConfig, getDefaultRowEditorConfig, parseColumn,\n refineRowEditorCombinations, stateSchema, TablePlusPlusCustomConfig, TableppDataColumnConfig,\n toObjectTypeLabel, toComponentTypeLabel, toWhenEmptyFieldOptionLabel,\n isDataColumn} from '../config-schema'\nimport { mapRecordToList } from '../../../../utils/typescript'\n\nexport function TablePPCustomConfigView(props: {\n name: string, customConfig: TablePlusPlusCustomConfig,\n onChange: (name: string, value: TablePlusPlusCustomConfig) => void\n setConfigFeedback: (type: 'valid' | 'warning' | 'error', message?: React.ReactNode) => void\n}) {\n const [sparqlVarNames, setSparqlVarNames] = React.useState([])\n const [selectVarNames, setSelectVarNames] = React.useState([])\n const [currentQuery, setCurrentQuery] = React.useState('')\n const [tabId, setTabId] = React.useState(props.customConfig.columnConfigs[0]?.id)\n\n const dataYasqe = useSelector(({currentViewer: {activeYasqes}}) => {\n if (activeYasqes.length === 0) console.error('no sparql editor window was found')\n if (activeYasqes.length > 1) console.error('could not identify which sparql-editor window is used for data-querying')\n return activeYasqes.length === 1 ? activeYasqes[0] : null\n })\n\n React.useEffect(() => {\n if (!dataYasqe) return\n const updateSPARQLVarNames = () => {\n setCurrentQuery(dataYasqe?.getValue() as string)\n const sparqlVarNames = dataYasqe.getVariablesFromQuery().map(s => s.slice(1))\n const selectVarNames = parseSparqlParams(dataYasqe.getValueWithoutComments())\n setSparqlVarNames(sparqlVarNames)\n setSelectVarNames(selectVarNames)\n }\n updateSPARQLVarNames()\n dataYasqe.on('blur', updateSPARQLVarNames)\n }, [dataYasqe, setSparqlVarNames])\n\n const validateConfig = () => {\n const parsed = stateSchema.superRefine((config, ctx) => {\n refineRowEditorCombinations(config, ctx, currentQuery)\n }).safeParse(props.customConfig)\n\n if (parsed.success) props.setConfigFeedback('valid')\n else props.setConfigFeedback('error', (\n ))\n }\n\n React.useEffect(() => validateConfig(), [currentQuery, props.customConfig])\n\n // @ts-ignore\n window.y = dataYasqe\n\n // these make it reasonably easy to trigger onClick events on drag-and-drop items\n const reasonablyClickableSensors = useSensors(useSensor(PointerSensor, {activationConstraint: {distance: 8}}))\n\n const isLinked = (column: ColumnConfig) => selectVarNames.includes(column.id)\n const isActionColumn = (column: ColumnConfig) => actionColumnConfigSchema.safeParse(column).success\n\n const updateConfig = (fn: (draft: Draft) => void) =>\n props.onChange(props.name, produce(props.customConfig, fn))\n\n const replaceColumn = (targetId: string, newColumn: ColumnConfig) => updateConfig(draft => {\n draft.columnConfigs = draft.columnConfigs.map(column => column.id === targetId ? newColumn : column)\n })\n\n const updateColumnPro = (column: T, update: (draft: Draft) => void) => {\n updateConfig(draft => {\n const colIdx = draft.columnConfigs.findIndex(c => c.id === column.id)\n if (colIdx === -1) throw new Error(`columnId ${column.id} could not be found`)\n update(draft.columnConfigs[colIdx] as Draft)\n })\n }\n\n const updateColumn = , V extends Draft[K]>\n (targetColumn: T, key: K, value: V) => updateColumnPro(targetColumn, c => c[key] = value)\n\n const updateColumnEditablePro = \n (column: T, update: (draft: Draft) => void) =>\n updateColumnPro(column, (draft) => {\n if (!draft.editable) draft.editable = getDefaultEditableColumnConfig()\n update(draft.editable)\n })\n\n const dataVarNames = sparqlVarNames.filter(s => !s.includes('_'))\n const dataSelectVarNames = selectVarNames.filter(s => !s.includes('_'))\n\n const unlinkedVarNames = dataVarNames.filter(varName =>\n !props.customConfig.columnConfigs.some(column => column.id === varName))\n const unlinkedSelectVarNames = dataSelectVarNames.filter(varName =>\n !props.customConfig.columnConfigs.some(column => column.id === varName))\n\n const addDataColumn = () => {\n const newColumn = { width: 'auto', filterable: true, sortable: true,\n id: unlinkedSelectVarNames?.[0] ?? `data-${Date.now()}`,\n label: unlinkedSelectVarNames?.[0] ?? ''}\n props.onChange(props.name, produce(props.customConfig, draft => {\n draft.columnConfigs.push(newColumn)\n }))\n setTabId(newColumn.id)\n }\n\n const addActionColumn = () => {\n const newColumn = createDefaultActionColumnConfig()\n updateConfig(draft => { draft.columnConfigs.push(newColumn) })\n setTabId(newColumn.id)\n }\n\n const removeColumn = (targetColumn: ColumnConfig) =>\n props.onChange(props.name, produce(props.customConfig, draft => {\n draft.columnConfigs = draft.columnConfigs.filter(column => column.id !== targetColumn.id)\n }))\n\n const autoFillColumns = () => {\n if (!unlinkedSelectVarNames.length) return\n const newColumns = unlinkedSelectVarNames.map(name =>\n ({id: name, label: name, width: 'auto', filterable: true, sortable: true,\n editable: props.customConfig.rowEditor?.enabled ? getDefaultEditableColumnConfig() : undefined\n }))\n props.onChange(props.name, produce(props.customConfig, draft => {\n draft.columnConfigs.push(...newColumns)\n }))\n setTabId(newColumns[0].id)\n }\n\n const reorder = (activeId: UniqueIdentifier, overId: UniqueIdentifier) => {\n const oldIdx = props.customConfig.columnConfigs.findIndex(c => c.id === activeId)\n const newIdx = props.customConfig.columnConfigs.findIndex(c => c.id === overId)\n props.onChange(props.name, produce(props.customConfig, draft => {\n draft.columnConfigs = arrayMove(props.customConfig.columnConfigs, oldIdx, newIdx)\n }))\n }\n\n return (\n
\n\n
\n updateConfig(draft => {\n if (!draft.rowEditor) draft.rowEditor = getDefaultRowEditorConfig()\n draft.rowEditor.enabled = v\n for (const column of draft.columnConfigs) {\n if ('sortable' in column && column?.editable === undefined)\n column.editable = getDefaultEditableColumnConfig()\n }\n })} />\n {props.customConfig.rowEditor?.enabled && (<>\n updateConfig(draft => {\n if (!draft.rowEditor) draft.rowEditor = getDefaultRowEditorConfig()\n draft.rowEditor.graph = e.target.value\n })} />\n )}\n
\n\n
\n \n {/* need this for MUI tooltip otherwise it won't show the tooltip on a disabled button -_-*/}\n \n \n \n
\n\n
\n \n {\n if (!e.active || !e.over) return\n reorder(e.active.id, e.over.id)\n }}>\n \n c.id)}>{props.customConfig.columnConfigs.map(column => (\n \n button]:hover:opacity-100\" value={column.id} aria-label={column.label}>\n {isActionColumn(column)? : isLinked(column)? : } {column.label}\n \n \n \n ))}\n \n \n\n {props.customConfig.columnConfigs.map(column => {\n const parsed = parseColumn(column)\n const tabsContentCss = \"grid w-full items-center gap-4 p-4 mt-0 bg-background rounded-lg\"\n\n if (parsed.dataColumn.success && !parsed.actionColumn.success) {\n const dataColumn = parsed.dataColumn.data\n return (<>\n \n {\n updateColumn(dataColumn, 'id', id)\n setTabId(id)\n }}\n suggestions={unlinkedVarNames}\n noSuggestionsPlaceholder={dataVarNames.length === 0\n ? \"current query does not contain any sparql identifiers\"\n : \"there are no unused sparql identifiers remaining\"} />\n updateColumn(dataColumn, 'label', e.target.value)} />\n Topic to publish to when clicked with _URI modifier}\n defaultValue={dataColumn.publishTopic}\n onChange={e => updateColumn(dataColumn, 'publishTopic', e.target.value || undefined)} />\n updateColumn(dataColumn, 'width', e.target.value)} />\n updateColumn(dataColumn, 'filterable', v)} />\n updateColumn(dataColumn, 'sortable', v)} />\n\n {props.customConfig.rowEditor?.enabled && (<>\n updateColumnEditablePro(dataColumn, c => c.enabled = v)} />\n {dataColumn.editable?.enabled && (<>\n updateColumnEditablePro(dataColumn, c => c.graph = e.target.value)} />\n updateColumnEditablePro(dataColumn, c => c.subject = e.target.value)} />\n updateColumnEditablePro(dataColumn, c => c.predicate = e.target.value)} />\n updateColumnEditablePro(dataColumn, c => c.objectType = v as EditableColumnConfig['objectType'])}\n options={toObjectTypeLabel} />\n updateColumnEditablePro(dataColumn, c => c.componentType = v as EditableColumnConfig['componentType'])}\n options={toComponentTypeLabel} />\n updateColumnEditablePro(dataColumn, c => c.whenEmptyField = v as EditableColumnConfig['whenEmptyField'])}\n options={toWhenEmptyFieldOptionLabel} />\n )}\n\n\n )}\n \n )}\n\n const parsedColumn = isDataColumn(column) ? parsed.dataColumn : parsed.actionColumn\n if (!parsedColumn.success) console.error(parsedColumn.error)\n return (\n \n {!parsedColumn.success && (\n
\n {parsedColumn.error.issues.map(issue => (\n ))}\n
For more info, see browser dev tools console.
\n
)}\n {\n const newColumn = value as ColumnConfig\n replaceColumn(column.id, newColumn)\n setTabId(newColumn.id)\n }} />\n
\n )\n\n })}
\n
\n
\n )\n}\n\nfunction TextInputWithSuggestions(props: {\n label: string\n placeholder: string\n selected: string | undefined\n select: (id: string) => void\n suggestions: string[]\n noSuggestionsPlaceholder: string\n}) {\n return (\n \n )\n}\n\nfunction ToggleInput(props: {\n label: string\n checked: boolean | undefined\n onCheckedChange: (checked: boolean) => void\n}) {\n return (\n \n )\n}\n\nfunction TextInput(props: {\n disabled?: boolean\n label: React.ReactNode\n defaultValue: string | undefined\n onChange: React.ChangeEventHandler\n withInterpolation?: boolean\n}) {\n return (\n \n )\n}\n\nfunction SelectionInput(props: {\n label: string\n defaultValue: Value | undefined\n onValueChange: (value: Value) => void\n options: Record\n}) {\n return (\n \n )\n}\n\nfunction InvalidCombinationReports(props: {parsedError: z.ZodError}) {\n const flattened = props.parsedError.flatten()\n const fieldErrors = flattened.fieldErrors as Record\n\n const messages: string[] = []\n let singleFieldErrorCount = 0\n for (const path in fieldErrors) {\n if (path !== CUSTOM_COMBINATION_PATH) {\n singleFieldErrorCount++\n continue\n }\n\n fieldErrors[path]?.forEach(m => messages.push(m))\n }\n if (singleFieldErrorCount) messages.unshift(singleFieldErrorCount === 1\n ? \"1 field above is invalid\"\n : `${singleFieldErrorCount} fields above are invalid`\n )\n\n return (<>{\n messages.map(message => (\n \n {message}\n ))\n })\n}\n\nfunction InvalidFieldMessage(props: {zodIssue: z.ZodIssue}) {\n const location = props.zodIssue.path\n .map(keyOrIndex => {\n switch(typeof keyOrIndex) {\n case \"string\": return `key \"${keyOrIndex}\"`\n case \"number\": return `index ${keyOrIndex}`\n default: return `unknown ${keyOrIndex}`\n }\n })\n .join(' > ')\n\n return (\n \n {props.zodIssue.code}\n {' at '}\n {location}\n \n )\n}\n","import React from 'react'\nimport { SparqlEditor } from './SPARQLEditor'\nimport { Input, Label } from 'reactstrap'\nimport { FormGroup} from './FormGroup'\nimport AceEditor from 'react-ace'\n// import MonacoEditor from 'react-monaco-editor';\n// import brace from 'brace';\n\nimport styles from './FormField.module.css'\nimport { ShowableComponent, useDialog } from \"../hooks/use-dialog\"\nimport { HelpDialog } from \"./HelpDialog\"\nimport { JsonEditor, JsonTextEditor } from \"./JsonEditor\"\nimport {mergeClasses} from '../helpers/styling'\nimport cssFix from './mui/resolutions.module.css'\nimport { SearchSelect } from './ui-primitives/search-select'\nimport {TablePPCustomConfigView} from './widgets/TablePlusPlus/components/CustomConfiguration'\nimport {type TablePlusPlusCustomConfig, DEFAULT_TABLEPP_CUSTOM_CONFIG} from './widgets/TablePlusPlus/config-schema'\n\ntype FormFieldProps = {\n name: string\n label: React.ReactNode\n topicValueInterpolationEnabled?: boolean\n placeholder?: string\n noResultsLabel?: string\n helpComponent?: ShowableComponent<{}, void>}\n & {setConfigFeedback?: SetConfigFeedback}\n & ( {type: 'array', value: string[], onChange: (name: string, value: string[]) => void}\n | {type: 'boolean', value: boolean, onChange: FormFieldOnChange}\n | {type: 'javascript', value: string, onChange: (name: string, value: string) => void}\n | {type: 'json', value: string, onChange: (name: string, value: string) => void}\n | {type: 'json-text', value: string, onChange: (name: string, value: string) => void}\n | {type: 'number', value: string, onChange: (name: string, value: string) => void}\n | {type: 'select', value: string, onChange: (name: string, value: string) => void, options: {label: string, value: string}[]}\n | {type: 'searchselect', value: string, onChange: (name: string, value: string) => void, options: {label: string, value: string}[]}\n | {type: 'text', value: string, onChange: (name: string, value: string) => void}\n | {type: 'yasgui', value: string, onChange: (name: string, value: string) => void}\n | {type: 'tablepp-custom', value?: TablePlusPlusCustomConfig,\n onChange: (name: string, value: TablePlusPlusCustomConfig) => void\n setConfigFeedback: SetConfigFeedback}\n )\n\ntype FormFieldOnChange = (name: string, value: V) => O\n\nexport type SetConfigFeedback = (type: 'valid' | 'warning' | 'error', message?: React.ReactNode) => void\n\nfunction FormField(props: FormFieldProps): React.ReactNode {\n switch (props.type) {\n\n case 'yasgui': return (\n \n \n props.onChange(props.name, value)}\n />\n \n )\n\n case 'javascript': return (\n \n \n {\n props.onChange(props.name, newValue)\n }}\n name=\"editor\"\n />\n \n )\n\n case 'select': return (\n \n \n props.onChange(props.name, e.target.value)}\n >\n {props.options && props.options.map((option) => (\n ))}\n \n \n )\n\n case 'searchselect': return (\n \n \n props.onChange(props.name, value)}\n options={props.options}\n placeholder={props.placeholder || 'Search...'}\n noResultsLabel={props.noResultsLabel || 'No results found'}\n buttonClassName=\"legacy bg-[#373a3c] !border-[#808080]\"\n contentClassName=\"legacy\"\n />\n \n )\n\n case 'boolean': return (\n \n \n \n )\n\n case 'json': return (\n \n \n {\n props.onChange(props.name, value as string)\n }} />\n \n )\n\n case 'json-text': return (\n \n \n {\n props.onChange(props.name, value as string)\n }} />\n \n )\n\n case 'array': return (\n \n \n props.onChange(props.name, e.target.value.split(','))}\n />\n \n )\n\n case 'tablepp-custom': return (\n \n \n \n \n )\n\n case 'text': return (\n \n \n props.onChange(props.name, e.target.value)}\n />\n \n )\n\n case 'number': return (\n \n \n props.onChange(props.name, e.target.value)}\n />\n \n )\n\n default:\n const anyProps: {[Property in keyof FormFieldProps]-?: any} = props\n console.error(`unknown type of formfield: ${anyProps.type}`)\n return (\n \n \n anyProps.onChange(anyProps.name, e.target.value)} />\n \n )\n }\n}\n\nfunction LabelWithHelp(\n props: Pick\n) {\n const show = useDialog()\n\n return (\n <>\n \n \n )\n}\n\nexport default FormField\n","\nimport { lazy } from 'react';\nimport PublishUtils from '../../../helpers/PublishUtils';\n\nclass BBPropertyPanelDescriptor {\n \n\n static getDescription() {\n return {\n name: 'BBPropertyPanel',\n component: lazy(() => import('./BBPropertyPanel')),\n label: 'BBPropertyPanel',\n variables: [\n {\n name: 'query',\n type: 'yasgui',\n defaultQuery:\"PREFIX rdf: \\n\\r \\n\\r select ?property ?pred ?value ?literal ?beschrijving ?beschrijvingValue ?icon ?iconColor\\n\\rwhere\\n\\r{\\n\\r <{{selection}}> ?pred ?value.\\n\\r filter(?pred!=rdf:type).\\n\\r filter (?pred!=)\\n\\r bind (strafter(StR(?pred),\\\"#\\\") as ?property)\\n\\r bind (ISLITERAL(?value) as ?literal)\\n\\r bind (\\\"fa fa-star\\\" as ?icon)\\n\\r bind (\\\"#aa00aa\\\" as ?iconColor)\\n\\r bind (\\\"een beschrijving\\\" as ?beschrijving)\\n\\r # bind (\\\"een beschrijving 2\\\" as ?beschrijvingValue)\\n\\r \\n\\r \\n\\r \\n\\r}\",\n label:\n 'to fill the property panel. Use ?property and ?value. optionally use ?beschrijving ?beschrijvingValue ?literal ?pred ?iconColor ?icon',\n },\n {\n name: 'childParameterText',\n type: 'text',\n label:\n 'string to replace in sparql with uri for getting child info (e.g. {{uri}})',\n },\n {\n name: 'renderEmpty',\n type: 'boolean',\n label: 'render an empty table',\n },\n {\n name: 'subscribeVariable',\n type: 'text',\n label:\n 'Published uri variabele on which to listen to define selection.',\n },\n {\n name: 'editable',\n type: 'boolean',\n label:\n 'allow edits. this needs extra ?graph ?datatype ?uri parameters',\n },\n {\n name: 'ruleTagAfterSubmit',\n type: 'text',\n label: 'run rule with tag after succesful submit',\n },\n {\n name: 'parameters',\n type: 'json-text',\n label:\n 'extra parameters send in JSON format,Parameters will be resolved before sending. keep it simple. no subchildren',\n },\n \n PublishUtils.getTimestampParametersDef(),\n {\n name: 'failureMessage',\n type: 'text',\n label: 'failure message',\n },\n {\n name: 'className',\n type: 'text',\n label: 'iframe classNames',\n },\n ],\n }\n }\n\n \n}\n\nexport default BBPropertyPanelDescriptor\n","\r\nimport { lazy } from 'react';\r\nexport default class BBDCheckboxTreeDescriptor {\r\n \r\n static getDescription() {\r\n return {\r\n name: 'BBCheckboxTree',\r\n component: lazy(() => import('./BBCheckboxTree')),\r\n label: 'BBCheckboxTree',\r\n variables: [\r\n \r\n {\r\n name: 'query',\r\n type: 'yasgui',\r\n label:'to fill the tree. ?uri ?text ?parent ?icon ',\r\n },\r\n \r\n ],\r\n }\r\n }\r\n\r\n \r\n}\r\n","import { HTMLProps } from \"react\"\n\nexport function PreSpan(props: HTMLProps) {\n const style: HTMLProps['style'] = {\n ...props.style,\n unicodeBidi: 'embed',\n fontFamily: 'monospace',\n whiteSpace: 'pre',\n }\n return \n}\n","import { lazy } from 'react';\r\n\r\nimport PublishUtils from './../../helpers/PublishUtils'\r\nimport { PreSpan } from '../ui-primitives/pre-span';\r\n\r\nexport default class TableDescriptor {\r\n static getDescription() {\r\n return {\r\n name: 'Table',\r\n status:\"normal\",\r\n category:\"Default\",\r\n component: lazy(() => import('./Table')), \r\n label: 'Table widget',\r\n variables: [\r\n {\r\n name: 'query',\r\n type: 'yasgui',\r\n\r\n description:\"extra documentation\",\r\n defaultQuery:\"PREFIX rdfs: \\n\\r\\n\\rselect distinct ?label ?labelURI ?comment\\n\\rwhere\\n\\r{\\n\\r graph ?g\\n\\r {\\n\\r ?labelURI a/rdfs:subClassOf* <{{cls}}>. ?labelURI rdfs:label ?label.\\n\\r optional { ?labelURI rdfs:comment ?comment}\\n\\r \\n\\r }\\n\\r\\n\\r}\\n\\r limit 100\",\r\n label:\r\n 'The results of this query are displayed in the table in the same order as they are returned from the triplestore. ' +\r\n 'Note that results of query-variable-names that end with either \"URI\", \"URL\", \"Icon\", \"IconColor\", \"IconSize\", are not displayed in the table, see help for an explanation of their functionality',\r\n helpComponent: QueryHelp\r\n },\r\n {\r\n name: 'publishVariable',\r\n type: 'text',\r\n label:\r\n 'Variabele in which item URI is published, when a link in the table is clicked.',\r\n description:\"more information about the publish variable\"\r\n },\r\n {\r\n name: 'highlightVariable',\r\n type: 'text',\r\n label: 'highlight table row with this uri',\r\n },\r\n {\r\n name: 'ashtml',\r\n type: 'boolean',\r\n label: 'tabel waardes als html',\r\n },\r\n {\r\n name: 'title',\r\n type: 'text',\r\n label: 'Titel boven de tabel',\r\n },\r\n {\r\n name: 'renderEmpty',\r\n type: 'boolean',\r\n label: 'render an empty table',\r\n },\r\n {\r\n name: 'zeroResult',\r\n type: 'text',\r\n label:\r\n 'text to display when sparql results is valid but has zero results',\r\n },\r\n {\r\n name: 'aggregateResultsByFirstParameter',\r\n type: 'boolean',\r\n label: 'aggregate sparql results by the first parameter',\r\n },\r\n {\r\n name: 'hideHeader',\r\n type: 'boolean',\r\n label:\r\n 'Hide the header',\r\n },\r\n {\r\n name: 'replaceHeaderJSON',\r\n type: 'text',\r\n label:\r\n 'Key value JSON that replaces parameter headers. {\"label\":\"naam (volledig)\"}',\r\n },\r\n {\r\n name: 'resetSelectedValueWhenNotAvailable',\r\n type: 'boolean',\r\n label: 'reset selected value when it is not available (anymore)',\r\n },\r\n {\r\n name: 'hasNumberedRows',\r\n type: 'boolean',\r\n label: 'show row numbers',\r\n },\r\n {\r\n name: 'centerContent',\r\n type: 'boolean',\r\n label: 'center values in the tabel',\r\n },\r\n PublishUtils.getResetValueDef(),\r\n {\r\n name: 'deletebuttonrule',\r\n type: 'text',\r\n label: 'uri or tag for rule when pushing delete icon',\r\n },\r\n {\r\n name: 'deletebuttonruleParams',\r\n type: 'json',\r\n label: 'Extra parameters send to the rule when pushing delete icon. Should be a flat JSON with string-only values.',\r\n },\r\n PublishUtils.getTimestampParametersDef(),\r\n ],\r\n }\r\n }\r\n \r\n}\r\n\r\nfunction QueryHelp() {\r\n return (\r\n
\r\n

When there is a query-variable-name varName

\r\n
    \r\n
  • {'{varName}'}URI will make it so that clicking on the table-cell value{' '}\r\n of varName will save the value of {'{varName}URI'} to this widget's\r\n {' '}configured app-variable.
  • \r\n
  • {'{varName}'}URL will make it so that clicking on the table-cell-value{' '}\r\n of varName will let make the browser follow the value of{' '}\r\n {'{varName}URI'} as a URL
  • \r\n
  • {'{varName}'}Icon will replace table-cell-value of varName with an{' '}\r\n icon from fontawesome.{' '}\r\n {'{varName}Icon'} should be formatted as {'fa-{iconName}'}
  • \r\n
  • {'{varName}'}IconColor sets the color of the aforementioned icon, which should be a{' '}\r\n css-color-value
  • \r\n
  • {'{varName}'}IconSize sets the height of the aforementioned icon, which should be a{' '}\r\n css-height-value
  • \r\n
\r\n
\r\n )\r\n}\r\n","import React from 'react'\nimport { restructureResponse } from '../../helpers/sparql'\nimport styles from './TableCells.module.css'\n\nclass TableCells extends React.Component {\n static getDescription() {\n return {\n name: 'TableCells',\n component: TableCells,\n label: 'TableCells widget',\n variables: [\n {\n name: 'query',\n type: 'yasgui',\n label:\n 'Query to fill table. Use ?header ?value ?row ?col to generate a matrix table .',\n },\n {\n name: 'publishVariable',\n type: 'text',\n label:\n 'Variabele in which tree item URI is published, when a link in the table is clicked.',\n },\n {\n name: 'isFirstItemBold',\n type: 'boolean',\n label: 'First item bold',\n },\n {\n name: 'title',\n type: 'text',\n label: 'Titel boven de tabel',\n },\n {\n name: 'onClick',\n type: 'javascript',\n label: 'Code that runs before link click event.',\n },\n ],\n }\n }\n\n createStateValues(items) {\n // not used\n let res = {}\n for (var i = 0; i < items.length; i++) {\n let item = items[i]\n Object.keys(item).forEach((key) => {\n if (key.endsWith('URI')) return\n let obj = { value: item[key] }\n if (item[key + 'URI']) obj.link = item[key + 'URI']\n if (!res[key]) {\n res[key] = obj\n } else if (Array.isArray(res[key])) {\n if (!res[key].filter((re) => re.value === obj.value).length) {\n res[key].push(obj)\n }\n } else if (res[key].value !== item[key]) {\n res[key] = [res[key], obj]\n }\n })\n }\n\n Object.keys(res).forEach((key) => {\n if (Array.isArray(res[key])) {\n res[key].sort((a, b) => a.value.localeCompare(b.value))\n }\n })\n\n return res\n }\n\n render() {\n //console.log(\"table 2 render function \");\n let data = this.props.data\n // console.log(data);\n if (!data || !data.results || data.results.bindings.length === 0) {\n return null\n }\n\n let items = restructureResponse(data)\n\n if (!items.length) return null\n\n var rowsHash = {}\n var rows = []\n var headersHash = {}\n var headers = []\n var n = 0\n for (var nitem in items) {\n var item = items[nitem]\n n++\n if (headersHash[item.header] == null) {\n headersHash[item.header] = n\n headers.push(item.header)\n } // collect unique headers;\n var row = rowsHash[item.row]\n if (row == null) {\n row = { row: item.row }\n rowsHash[item.row] = row\n rows.push(row)\n }\n row[item.header] = item.value\n }\n\n console.log(rows)\n\n return (\n \n {this.props.title && (\n
{this.props.title}
\n )}\n \n {\n \n \n {headers.map((headVar, index) => (\n \n ))}\n \n \n }\n\n \n {rows.map((row, rindex) => (\n \n {headers.map((header, hindex) => (\n \n ))}\n \n ))}\n \n
{headVar}
{row[header]}
\n \n )\n }\n}\n\nexport default TableCells\n","import { lazy } from 'react';\r\n\r\nimport PublishUtils from './../../helpers/PublishUtils'\r\n\r\nexport default class TreeDescriptor {\r\n \r\n\r\n static getDescription() {\r\n return {\r\n name: 'Tree',\r\n component: lazy(() => import('./Tree')), \r\n label: 'Tree widget',\r\n category:\"basic\",\r\n variables: [\r\n {\r\n name: 'query',\r\n type: 'yasgui',\r\n defaultQuery:\"PREFIX owl: \\n\\rPREFIX rdfs: \\n\\r\\n\\rselect distinct ?label ?uri ?parent ?icon ?description \\n\\rwhere\\n\\r{\\n\\r \\n\\r graph <{{graph}}>\\n\\r {\\n\\r ?uri a owl:Class.\\n\\r ?uri rdfs:label ?label.\\n\\r optional {?uri rdfs:subClassOf ?parent. } \\n\\r optional {\\n\\r filter not exists {[] rdfs:subClassOf ?uri} bind (\\\"leaf\\\" as ?icon2) }\\n\\r bind (if(BOUND(?icon2),?icon2,\\\"star\\\") as ?icon)\\n\\r \\n\\r }\\n\\r}\\n\\r\\n\\rlimit 100\",\r\n label:\r\n 'Query to fill tree. First item should be the object label, the second the object URI, the third the parent URI. optional you can use icon, icon2 and icon3 variables for fa-fa icons and checkbox for checkbox version. Use ?description of an tooltip using a info icon',\r\n },\r\n {\r\n name: 'publishVariable',\r\n type: 'text',\r\n label:\r\n 'Variabele in which tree item URI is published, when tree item is clicked.',\r\n },\r\n {\r\n name: 'publishVariable2',\r\n type: 'text',\r\n label:\r\n 'Variabele in which tree item URI2 is published, when tree item is clicked.',\r\n },\r\n {\r\n name: 'publishVariable3',\r\n type: 'text',\r\n label:\r\n 'Variabele in which tree item URI3 is published, when tree item is clicked.',\r\n },\r\n {\r\n name: 'publishVariable4',\r\n type: 'text',\r\n label:\r\n 'Variabele in which tree item URI4 is published, when tree item is clicked.',\r\n },\r\n {\r\n name: 'subscribeVariable',\r\n type: 'text',\r\n label:\r\n 'Publish variabele on which to listen to to define tree item selection.',\r\n },\r\n {\r\n name: 'textstyle',\r\n type: 'text',\r\n label: 'css class for text style. {w2ui}',\r\n },\r\n {\r\n name: 'rootLabel',\r\n type: 'text',\r\n label: 'Label of the root of the tree. Leave empty for no root.',\r\n },\r\n \r\n {\r\n name: 'expandLevel',\r\n type: 'int',\r\n label: 'initially expand the tree to this level',\r\n },\r\n \r\n {\r\n name: 'title',\r\n type: 'text',\r\n label: 'title',\r\n },\r\n {\r\n name: 'defaultIcon',\r\n type: 'text',\r\n label: 'fa icon name when no icon is defined. ',\r\n },\r\n {\r\n name: 'aggregate',\r\n type: 'boolean',\r\n label: 'Aggregate the results based upon parent and child uri ',\r\n },\r\n {\r\n name: 'shouldNonSelectedSubTreeClose',\r\n type: 'boolean',\r\n label:\r\n 'Should a subtree that does not contain selection fold on new selection.',\r\n },\r\n {\r\n name: 'setSelectionInURL',\r\n type: 'boolean',\r\n label: 'the selected URI will be used in the browser URL. THIS WORKS ONLY WHEN browser URL is similar to the selection (Security reasons)',\r\n },\r\n {\r\n name: 'debugSetSelectionInURL',\r\n type: 'boolean',\r\n label: 'sets a ?selection parameter in the browser url for Debug reasons',\r\n },\r\n {\r\n name: 'setSelectionInURLStartsString',\r\n type: 'text',\r\n label:\r\n 'the selected URI will be used in the browser URL only if it starts with this text. . ',\r\n },\r\n {\r\n name: 'parseInitialURLForSelection',\r\n type: 'boolean',\r\n label: 'parse the initial URL for selection',\r\n },\r\n {\r\n name: 'initialSelection',\r\n type: 'text',\r\n label: 'initial uri selection',\r\n },\r\n {\r\n name: 'scrollSelectionIntoView',\r\n type: 'boolean',\r\n label: 'try to automatically scroll the selected object into view',\r\n },\r\n {\r\n name:'multipleCheckBoxParameter',\r\n type:'text',\r\n label:\"parameter for (multiple) checkbox values \"\r\n }\r\n ,\r\n PublishUtils.getMultipleValueFormatOptions(),\r\n {\r\n name: 'deletebuttonrule',\r\n type: 'text',\r\n label: 'uri or tag for rule when pushing delete icon',\r\n },\r\n {\r\n name: 'deletebuttonruleParams',\r\n type: 'json',\r\n label: 'Extra parameters send to the rule when pushing delete icon. Should be a flat JSON with string-only values.',\r\n },\r\n {\r\n name: 'allowNonLeafDeletion',\r\n type: 'boolean',\r\n label: 'Allow deletion of items with children',\r\n },\r\n PublishUtils.getTimestampParametersDef()\r\n ]\r\n }\r\n }\r\n \r\n}","import { lazy } from 'react';\n\nexport default class TreeD3Descriptor {\n \n\n static getDescription() {\n return {\n name: 'TreeD3',\n component: lazy(() => import('./TreeD3')), \n label: 'TreeD3 widget',\n variables: [\n {\n name: 'query',\n type: 'yasgui',\n label: 'to fill tree',\n },\n {\n name: 'publishVariableOnTreeItemClick',\n type: 'text',\n label:\n 'Publish/subscribe variabele in which tree item URI is published, when tree item is clicked.',\n },\n {\n name: 'subscribeVariableForTreeItemSelection',\n type: 'text',\n label:\n 'Publish/subscribe variabele on which to listen to define tree item selection.',\n },\n {\n name: 'subscribeVariableForTreeConnectionHighlight',\n type: 'text',\n label:\n 'Publish/subscribe variabele on which to listen to define which tree connections to highlight',\n },\n {\n name: 'subscribeVariableForFilter',\n type: 'text',\n label:\n 'Publish/subscribe variabele on which to listen to define which tree items should be filtered out',\n },\n {\n name: 'rootLabel',\n type: 'text',\n label: 'Label of the root of the tree. Leave empty for no root.',\n },\n {\n name: 'treeType',\n type: 'select',\n label: 'Soort boom',\n options: [\n {\n label: 'Horizontaal',\n value: 'horizontal',\n },\n {\n label: 'Radiaal',\n value: 'radial',\n },\n ],\n },\n ],\n }\n }\n\n \n}\n\n","import React, { Component } from 'react'\nimport styles from './SelectBox.module.css'\nimport { Input } from 'reactstrap'\nimport { restructureResponse } from '../../helpers/sparql'\nimport { not, isEmptyObject } from '../../helpers/utils'\nimport isEqual from 'lodash/isEqual'\nimport PublishUtils from '../../helpers/PublishUtils'\n\nclass SelectBox extends Component {\n\n static getDescription() {\n return {\n name: 'SelectBox',\n component: SelectBox,\n label: 'Select box widget',\n variables: [\n {\n name: 'query',\n type: 'yasgui',\n defaultQuery:\"select distinct ?graph ?label \\r\\n where \\r\\n{ \\r\\n graph ?g \\r\\n { \\r\\n values(?label ?graph)\\r\\n { \\r\\n (\\\"tva\\\" ) \\r\\n (\\\"rhijnkade\\\" ) \\r\\n }\\r\\n }\\r\\n}\",\n label: 'To fill select box items',\n },\n {\n name: 'publishVariable',\n type: 'text',\n label:\n 'Variabele in which the URI of the selected item is published.',\n },\n {\n name: 'publishVariable2',\n type: 'text',\n label: 'Variabelename for ?uri2 of the selected item (if available).',\n },\n {\n name: 'publishVariable3',\n type: 'text',\n label: 'Variabelename for ?uri3 of the selected item (if available).',\n },\n {\n name: 'preSelectFirstItem',\n type: 'boolean',\n label: 'pre select first item',\n },\n {\n name: 'label',\n type: 'text',\n label: 'Label',\n topicValueInterpolationEnabled: true\n },\n {\n name: 'extrastyle',\n type: 'text',\n label: 'extra css style ({\"border-radius\":\"20px\"})',\n },\n // PublishUtils.getResetValueDef()\n ],\n }\n }\n\n componentDidMount() \n {\n if (this.props.data) {\n this.preSelect()\n }\n }\n\n componentDidUpdate(prevProps) \n {\n try {\n if (!isEqual(prevProps.data, this.props.data)) {\n this.preSelect()\n }\n } catch (e) {\n console.log(e)\n }\n }\n\n preSelect() {\n try {\n // console.log(\"preselect the first item\",this.props.preSelectFirstItem);\n if (this.props.preSelectFirstItem!=true) return;\n var value = 'http://www.buildingbits.nl/reset'\n if (this.props.data==null) \n {\n if (this.props.publishVariable != null) \n {\n this.props.publish(this.props.publishVariable, value)\n }\n return;\n }\n let item = restructureResponse(this.props.data)[0]\n if (item == null) {\n } else {\n let keyURI = this.props.data.head.vars[0]\n value = item[keyURI]\n }\n\n if (this.props.publishVariable != null) \n {\n this.props.publish(this.props.publishVariable, value)\n }\n if (this.props.publishVariable2 != null && item['uri2'] != null) {\n // console.log('initial select publishing uri2 ', item['uri2'])\n this.props.publish(this.props.publishVariable2, item['uri2'])\n \n }\n if (this.props.publishVariable3 != null && item['uri3'] != null) {\n // console.log('initial select publishing uri2 ', item['uri2'])\n \n this.props.publish(this.props.publishVariable3, item['uri3'])\n }\n } catch (e) {\n console.log(e)\n }\n }\n\n onChange = (event) => {\n let value = event.target.value\n let value2 = null\n let value3 = null\n\n try {\n value2 = event.target[event.target.selectedIndex].getAttribute('value2')\n } catch (e) {}\n\n try {\n value3 = event.target[event.target.selectedIndex].getAttribute('value3')\n } catch (e) {}\n\n this.setState({selected:value});\n if ((this.props.publishVariable != null) && (this.props.publishVariable != \"\") )\n {\n // PublishUtils.emptyDataParameterChange(this);\n this.props.publish(this.props.publishVariable, value)\n }\n\n if (this.props.publishVariable2 != null && value2 != null && this.props.publishVariable2 != \"\") \n {\n //console.log('select publishing uri2 ',this.props.publishVariable2,value2,event.target[event.target.selectedIndex]);\n this.props.publish(this.props.publishVariable2, value2.toString())\n \n }\n if (this.props.publishVariable3 != null && value3 != null&& this.props.publishVariable3 != \"\") \n {\n // console.log('select publishing uri3 ',this.props.publishVariable3,value3.toString());\n this.props.publish(this.props.publishVariable3, value3)\n }\n \n }\n\n render() \n {\n let ok=true;\n \n if (!this.props) {ok=false;}\n if (!this.props.data) {ok=false;}\n let items = null\n let keyURI =null;\n let keyLabel =null;\n\n if (ok)\n {\n try{\n let headVars = this.props.data.head.vars\n if (headVars.length < 2) ok=false;\n keyURI = headVars[0] // graph\n keyLabel = headVars[1] // label\n \n try {\n items = restructureResponse(this.props.data).filter(not(isEmptyObject))\n } catch (er) {\n // console.log(er);\n \n ok=false;\n }\n }\n catch(e){}\n }\n\n if (items == null) { items=[]}\n const value = this.props.publishVariable ? this.props.pubsub[this.props.publishVariable] : null\n const stylePanel = styles[this.props.panelstyle]\n const stylePrimaryAction = this.props.colorPrimaryAction ? 'primaryColor' : ''\n\n var extrastyle={};\n if (this.props.extrastyle!=null)\n {\n try{\n extrastyle=JSON.parse(this.props.extrastyle);\n }\n catch(e){}\n }\n\n return (\n
\n
{this.props.label}
\n \n {/* */}\n {items.map((item) => \n {\n //var selected=false;\n // if (item[keyURI]==this.state.selected) selected=true;\n \n return (\n \n \n {item[keyLabel]}\n \n ) } \n )}\n \n
\n )\n }\n}\n\nexport default SelectBox\n","import React, { Component } from 'react'\nimport styles from './Slider.module.css'\nimport { restructureResponse } from '../../helpers/sparql'\nimport throttle from 'lodash/throttle'\n\nclass Slider extends Component {\n state = {}\n sliderTouched = false\n\n static getDescription() {\n var r = {\n name: 'Slider',\n component: Slider,\n label: 'Slider widget',\n variables: [\n {\n name: 'query',\n type: 'yasgui',\n label:\n 'Sparql query to define min max values of the slider. it uses only the first parameter',\n },\n {\n name: 'publishVariable',\n type: 'text',\n label: 'Variabele in which the value of the slider is published.',\n },\n\n {\n name: 'startMin',\n type: 'boolean',\n label: 'default on minimum',\n },\n {\n name: 'publishStartValue',\n type: 'boolean',\n label: 'publish the initial value',\n },\n\n {\n name: 'tick',\n type: 'text',\n label: 'tick',\n },\n {\n name: 'label',\n type: 'text',\n label: 'Label',\n },\n {\n name: 'textwidth',\n type: 'text',\n label: 'text width',\n },\n ],\n }\n return r\n }\n\n componentDidUpdate(prevProps) {\n const newRange = this.defineMaxMinValue()\n const oldRange = this.defineMaxMinValue(prevProps)\n if (newRange.maxValue === oldRange.maxValue && newRange.minValue === oldRange.minValue) return\n\n const value = this.sliderTouched ? Math.max(newRange.minValue, Math.min(newRange.maxValue, this.state.value)) :\n this.props.startMin ? newRange.minValue : newRange.maxValue\n this.setState({value: value})\n if (this.props.publishVariable && this.props.publishStartValue) {\n this.props.publish(this.props.publishVariable, value)\n }\n }\n\n defineMaxMinValue(alternateProps) {\n let minValue = 1000000\n let maxValue = -1000000\n try {\n var data = this.props.data\n if (alternateProps) {\n data = alternateProps.data\n }\n let headVars = data.head.vars\n let key = headVars[0] // eg. oprichtingsDatum\n let items = restructureResponse(data)\n\n items.forEach((item) => {\n let value = item[key]\n try {\n if (typeof value === 'string') value = Number(value)\n } catch (error) {\n console.log(error)\n }\n if (value < minValue) minValue = value\n if (value > maxValue) maxValue = value\n })\n return { minValue, maxValue }\n } catch (e) {\n console.log(e)\n }\n return { minValue, maxValue }\n }\n\n onChange = (event) => {\n this.sliderTouched = true\n this.setState({\n value: event.target.value,\n })\n // console.log(event);\n\n //this.onChangeThrottle();\n }\n onmouseup = (event) => {\n // console.log(\"mouse up\");\n this.onChangeThrottle()\n }\n\n onChangeThrottle = throttle(() => {\n // console.log(\"slider update\");\n let value = this.state.value\n\n if (value) {\n console.log('really publishing ', this.props.publishVariable, value)\n this.props.publish(this.props.publishVariable, value)\n }\n }, 200)\n\n render() {\n if (!this.props.data) return null\n let step = 1\n if (this.props.tick != null) {\n try {\n step = parseInt(this.props.tick)\n } catch (error) {}\n }\n let { minValue, maxValue } = this.defineMaxMinValue()\n\n let value\n if (this.props.startMin) {\n value = this.state.value || minValue\n } else {\n value = this.state.value || maxValue\n }\n\n return (\n
\n \n \n \n \n \n \n
\n
{this.props.label}
\n
\n
{minValue}
\n \n
{maxValue}
\n
({value})
\n
\n
\n
\n )\n }\n}\n\nexport default Slider\n","import React, { Component } from 'react'\nimport styles from './SearchAutocomplete.module.css'\nimport { Input } from 'reactstrap'\nimport { restructureResponse } from '../../helpers/sparql'\nimport PublishUtils from '../../helpers/PublishUtils'\nimport Icon from '@mui/material/Icon';\n\n\n//magnifyingGlass from '../../images/magnifying-glass.svg';\n//import cross from '../../images/cross.svg';\n\nclass SearchAutocomplete extends Component {\n state = {\n searchValue: '',\n validItems: [],\n showPopup: false,\n selectedIndex: 0\n }\n\n itemsRef = React.createRef()\n\n static getDescription() {\n return {\n name: 'SearchAutocomplete',\n component: SearchAutocomplete,\n label: 'Search autocomplete widget',\n variables: [\n {\n name: 'query',\n defaultQuery:\"PREFIX owl: \\n\\rPREFIX rdfs: \\n\\r\\n\\rselect distinct ?label ?uri ?icon \\n\\rwhere\\n\\r{\\n\\r \\n\\r graph <{{graph}}>\\n\\r {\\n\\r ?uri a owl:Class.\\n\\r ?uri rdfs:label ?label.\\n\\r optional {\\n\\r filter not exists {[] rdfs:subClassOf ?uri} bind (\\\"folder\\\" as ?icon2) }\\n\\r \\n\\r # bind (if(BOUND(?icon2),?icon2,\\\"star\\\") as ?icon)\\n\\r \\n\\r }\\n\\r}\\n\\r\\n\\rlimit 1000\",\n type: 'yasgui',\n label: 'Query to fill search results. parameters search string, uri and optionally ?icon',\n },\n {\n name: 'publishVariable',\n type: 'text',\n label: 'Variabele in which searchterm is published.',\n },\n // {\n // name: 'selectVariable',\n // type: 'text',\n // label: 'Variabele to find a selection int the search widget (not implemented)',\n // },\n {\n name: 'nullSelectionResetVariable',\n type: 'boolean',\n label: 'set reset value when nothing is selected',\n },\n {\n name: 'alignItems',\n type: 'select',\n label: 'Uitlijning',\n options: [\n {\n label: 'Stretch',\n value: 'stretch',\n },\n {\n label: 'Start',\n value: 'flex-start',\n },\n {\n label: 'Center',\n value: 'center',\n },\n {\n label: 'End',\n value: 'flex-end',\n },\n ],\n },\n PublishUtils.getResetValueDef(),\n {\n name: 'textbefore',\n type: 'text',\n label: 'text before the search input.',\n },\n {\n name: 'cssEscape',\n type: 'text',\n label: 'JSON object of CSS statements',\n },\n\n {\n name: 'resetPublishVariable',\n type: 'boolean',\n label: 'Reset the publish variable when sparql changes',\n },\n {\n name: 'placeholderText',\n type: 'text',\n label: 'Placeholder text for the search bar',\n },\n ],\n }\n }\n\n shouldComponentUpdate(e, b) {\n if (e == null) return true\n if (this.props == null) return true\n if (e.data !== this.props.data) {\n //console.log(\"NEW DATA. refresh current searchbox\");\n\n if (this.props.resetPublishVariable === true) {\n let pv = this.props.publishVariable\n // console.log(\"should reset if variable is present\",pv);\n if (pv != null) {\n // console.log(\"publish variable could be present\");\n if (this.props.pubsub[pv] != null) {\n //console.log(\"reset publish variable \",pv,this.props.pubsub[pv]);\n\n this.setState({ searchValue: '' })\n this.props.publish(pv, 'http://www.buildingbits.nl/empty')\n }\n }\n }\n }\n try {\n if (this.props.selectVariable!=null)\n {\n var sv =this.props.selectVariable;\n if (this.props.pubsub[sv]!=e.pubsub[sv])\n {\n var selectedProp = e.pubsub[sv];\n console.log(\"we should search for \"+selectedProp);\n }\n }\n }\n catch(e){}\n\n return true\n }\n\n handleKeyPress = (e) => {\n if (e.key === 'Enter') {\n if (!this.state.validItems.length) {\n return\n }\n\n let selectedItem = null;\n if (this.state.selectedIndex != null) {\n selectedItem = this.state.validItems[this.state.selectedIndex]\n } else if (this.state.validItems.length === 1) {\n selectedItem = this.state.validItems[0]\n }\n\n if (!selectedItem) {\n return\n }\n\n const objectKey = this.props.data.head.vars[0]\n const objectURIKey = this.props.data.head.vars[1]\n\n this.publish(selectedItem[objectURIKey], selectedItem[objectKey])\n } else if (e.key === 'ArrowDown') {\n e.preventDefault() // prevent cursor moving to end\n\n let selectedIndex = this.state.selectedIndex\n let validItems = this.state.validItems\n if (selectedIndex === validItems.length - 1) return\n this.setState({\n selectedIndex: selectedIndex === null ? 0 : selectedIndex + 1,\n })\n this.scrollToSelectedItem(\"down\");\n } else if (e.key === 'ArrowUp') {\n e.preventDefault() // prevent cursor moving to start\n\n let selectedIndex = this.state.selectedIndex\n if (selectedIndex === 0) return\n this.setState({\n selectedIndex:\n selectedIndex === null\n ? this.state.validItems.length - 1\n : selectedIndex - 1,\n })\n this.scrollToSelectedItem(\"up\");\n } else if (e.key === 'Escape') {\n this.setState({ searchValue: '' })\n }\n }\n\n /**\n * @param direction {\"up\"|\"down\"}\n */\n scrollToSelectedItem(direction) {\n requestAnimationFrame(() => {\n if (!this.itemsRef.current) return\n const selectedItem = this.itemsRef.current.querySelector('[data-is-selected=true]')\n if (!selectedItem) return\n if (isInView(this.itemsRef.current, selectedItem)) return\n selectedItem.scrollIntoView({ block: direction === \"up\" ? \"start\" : \"end\" })\n })\n }\n\n onChange = (e) => {\n let objectKey = this.props.data.head.vars[0]\n let searchValue = e.target.value\n\n let items = restructureResponse(this.props.data)\n\n // Always render items starting with search query on top\n const itemsStartingWithSearchQuery = items.filter(item =>\n item[objectKey] && item[objectKey].toLowerCase().startsWith(searchValue.toLowerCase())\n )\n const itemsOnlyContainingSearchQuery = items.filter(item =>\n item[objectKey]\n && item[objectKey].toLowerCase().includes(searchValue.toLowerCase())\n && !item[objectKey].toLowerCase().startsWith(searchValue.toLowerCase()))\n const validItems = [\n ...itemsStartingWithSearchQuery,\n ...itemsOnlyContainingSearchQuery\n ]\n\n this.setState({\n searchValue,\n showPopup: true,\n validItems,\n selectedIndex: 0,\n })\n }\n\n onBlur = (e) => {\n setTimeout(() => {\n this.setState({\n showPopup: false,\n })\n }, 300)\n }\n\n publish(objectURI, key) {\n let publishVariable = this.props.publishVariable\n var data = {}\n\n data[publishVariable] = objectURI\n\n this.props.publish(publishVariable, objectURI) //DIT EERST\n\n PublishUtils.resetParameter(this, false)\n \n this.setState({\n showPopup: false,\n searchValue: key,\n })\n }\n\n renderLabel(label, searchValue,icon) {\n let ind = label.toLowerCase().indexOf(searchValue.toLowerCase())\n if (ind === -1) {\n return
{label} \n {icon && ({icon})}\n
\n }\n let end = ind + searchValue.length\n let l1 = label.slice(0, ind)\n let l2 = label.slice(ind, end)\n let l3 = label.slice(end)\n return (\n
\n {l1}\n {l2}\n {l3}\n {icon && ({icon}) }\n
\n )\n }\n\n renderValidItems() {\n try {\n if (!this.props.data) return\n\n let objectKey = this.props.data.head.vars[0]\n let objectURIKey = this.props.data.head.vars[1]\n let searchValue = this.state.searchValue\n let validItems = this.state.validItems\n let selectedIndex = this.state.selectedIndex\n let selectedItem = validItems[selectedIndex]\n\n if (!searchValue) return null\n if (!validItems.length)\n return
geen resultaten gevonden
\n if (!this.state.showPopup) return null\n\n return (\n
\n {validItems.map((item, index) => {\n let isSelected =\n selectedItem && selectedItem[objectURIKey] == item[objectURIKey]\n let icon =item.icon;\n return (\n \n \n this.publish(item[objectURIKey], item[objectKey])\n }\n >\n {this.renderLabel(item[objectKey], searchValue,icon)}\n \n \n
\n \n \n )\n })}\n \n )\n } catch (ee) {\n console.log(ee)\n }\n return\n }\n\n emptyEvent=()=>\n {\n // console.log(\"empty event\");\n this.setState({ searchValue: '' });\n if (this.props.nullSelectionResetVariable)\n {\n if (this.props.publishVariable!=null)\n {\n this.props.publish(this.props.publishVariable, PublishUtils.resetUri) //DIT EERST\n PublishUtils.resetParameter(this, false)\n }\n }\n }\n\n render() {\n if (!this.props.data) return null\n let mainStyle = {\n alignItems: this.props.alignItems || 'stretch',\n }\n\n let css = this.props.cssEscape\n if (css) {\n try {\n css = JSON.parse(css)\n mainStyle = {\n ...mainStyle,\n ...css,\n }\n } catch (error) {\n console.log(error)\n }\n }\n let text = this.props.textbefore\n if (text != null && text.length < 1) {\n text = null\n }\n return (\n
\n
\n {text && {text}}\n \n {this.state.searchValue ? (\n \n ) : (\n \n )}\n
\n {this.renderValidItems()}\n
\n )\n }\n}\n\n/**\n * @param container {HTMLElement}\n * @param element {HTMLElement}\n * @return {boolean}\n */\nfunction isInView(container, element) {\n const cTop = container.scrollTop\n const cBottom = cTop + container.clientHeight\n\n const eTop = element.offsetTop\n const eBottom = eTop + element.clientHeight\n\n return eTop >= cTop && eBottom <= cBottom\n}\n\nexport default SearchAutocomplete\n","import React, { Component } from 'react'\nimport styles from './SplitLayout.module.css'\nimport Area from '../Area'\nimport { interpolateSubscriptions } from '../../helpers/widget'\nimport { mergeClasses } from \"../../helpers/styling\"\nimport { ExternalLinkIcon } from \"@radix-ui/react-icons\"\n\nclass SplitLayout extends Component {\n static getDescription() {\n return {\n name: 'SplitLayout',\n component: SplitLayout,\n label: 'Split Layout',\n variables: [\n {\n name: 'direction',\n type: 'select',\n label: 'Direction',\n options: [\n {\n label: 'Rijen',\n value: 'column',\n },\n {\n label: 'Kolommen',\n value: 'row',\n },\n ],\n },\n {\n name: 'disableScrollbars',\n type: 'boolean',\n label: 'disable scrollbars',\n },\n {\n name: 'minimize',\n type: 'boolean',\n label: 'minimize size',\n },\n {\n name: 'areaSizes',\n type: 'array',\n label: \"Column widths or row heights, separated by commas. Values can be specified in pixels, percentages, or numbers. A number represents a relative ratio compared to the other Rows/Columns. For example: 130px,1,10%\"\n },\n {\n name: 'useFlexboxForAreaSizes',\n type: 'boolean',\n label: (\n \n Advanced: Use flexbox for column widths and row heights above.{' '}\n Interprets the area sizes directly as CSS flexbox properties .{' '}\n Does not work together with minimize option.\n \n )\n },\n {\n name: 'gap',\n type: 'string',\n label: 'Gap size between areas'\n },\n {\n name: 'style',\n type: 'json',\n label: 'style for each area',\n },\n {\n name: 'areas',\n type: 'json',\n // label: 'Column widths or row heights (separated by commas). Value can be a number (which will be set as flex values/verhoudingswaarden) or a px/% value',\n label: 'area definitions',\n },\n ],\n }\n }\n\n render() {\n \n if (this.props.withinSelectedTab === false && this.firstTime == null) {\n return null\n } else {\n this.firstTime = false\n }\n\n let areaSizes = this.props.areaSizes\n let areas= this.props.areas;\n\n const useFlexboxForAreaSizes = Boolean(this.props.useFlexboxForAreaSizes)\n\n if (areas==null)areas=[];\n\n if (typeof areaSizes === 'string') {\n areaSizes = areaSizes.split(' ')\n }\n\n const extraClassNames = mergeClasses({\n [styles.overflowHidden]: this.props.disableScrollbars\n })\n\n let mode = this.props.mode || 'preview'\n\n // if (this.props.minimize)\n return (\n \n {areaSizes.map((areaSize, index) => {\n let areaConfig = areas[index] || {}\n const originalAreaSize = areaSize\n areaSize = areaSize.trim()\n let flex = '0 0 auto'\n // let flex = '1 1 auto';\n let fixedSize = 'auto'\n\n if (/^\\d+$/.test(areaSize)) {\n if (areaSize === '0') {\n areaSize = '0 0 auto'\n }\n flex = areaSize\n } else {\n fixedSize = areaSize\n }\n let heightOrWidth =\n this.props.direction === 'row' ? 'width' : 'height'\n if (this.props.minimize) {\n heightOrWidth =\n 'max' +\n heightOrWidth.substr(1).toLocaleUpperCase() +\n heightOrWidth.substr(1)\n //console.log(\"minimize \",heightOrWidth, fixedSize);\n flex = '1 1 auto'\n }\n\n if (this.props.direction !== 'row') {\n // console.log(areaSize);\n if (!areaSize.endsWith('px')) {\n flex = '1 1 auto'\n }\n }\n if (mode !== 'preview' && areaSize.endsWith('px')) {\n areaSize = parseInt(areaSize.replace('px', ''))\n areaSize += 200\n areaSize = areaSize + 'px'\n // console.log(\"moeten we nu niet de hoogte aanpassen ?\",areaSize);\n }\n\n if (useFlexboxForAreaSizes) {\n flex = originalAreaSize\n fixedSize = 'auto'\n }\n\n if (interpolateSubscriptions(this, areaConfig.hidden, 'boolean'))\n fixedSize = (() => {\n if (this.props.mode !== 'edit') return 0\n if (this.props.direction === 'row') return 100\n return 20\n })()\n\n return (\n \n \n \n )\n })}\n \n )\n }\n}\n\nexport default SplitLayout\n","\n\nimport { lazy } from 'react';\n\nexport default class SplitLayoutTestDescriptor {\n static getDescription() {\n return {\n name: 'SplitLayoutTest',\n component: lazy(() => import('./SplitLayoutTest')), \n label: 'Split Layout Test',\n variables: [\n {\n name: 'direction',\n type: 'select',\n label: 'Direction',\n options: [\n {\n label: 'Rijen',\n value: 'column',\n },\n {\n label: 'Kolommen',\n value: 'row',\n },\n ],\n },\n {\n name: 'areaSizes',\n type: 'array',\n // label: 'Column widths or row heights (separated by commas). Value can be a number (which will be set as flex values/verhoudingswaarden) or a px/% value',\n label:\n \"Kolom Breedte of Rij hoogte, gescheiden door comma's. Waarden kunnen gegeven worden in getallen. Een getal is verhoudingsgetal ten opzichte van de andere Rijen/Kolommen. (Een voorbeeld: 1,3,1)\",\n },\n {\n name: 'minSizes',\n type: 'array',\n // label: 'Column widths or row heights (separated by commas). Value can be a number (which will be set as flex values/verhoudingswaarden) or a px/% value',\n label:\n \"initiele grootte, gescheiden door comma's. Waarden kunnen gegeven worden in pixels. (Een voorbeeld: 130px,200px,300px)\",\n },\n {\n name: 'cardSizes',\n type: 'array',\n // label: 'Column widths or row heights (separated by commas). Value can be a number (which will be set as flex values/verhoudingswaarden) or a px/% value',\n label:\n 'padding Waarden kunnen gegeven worden in pixels, percentage of getallen. Een getal is verhoudingsgetal ten opzichte van de andere Rijen/Kolommen. (Een voorbeeld: 130px,1,10%)',\n },\n {\n name: 'areas',\n type: 'json',\n // label: 'Column widths or row heights (separated by commas). Value can be a number (which will be set as flex values/verhoudingswaarden) or a px/% value',\n label: 'area definitions',\n },\n ],\n }\n }\n}\n","import React, { Component } from 'react'\nimport styles from './Yasgui.module.css'\n//import yasqe from 'yasgui-yasqe'\nimport yasgui from '@triply/yasgui'\nimport '../../../node_modules/@triply/yasqe/build/yasqe.min.css'\n//import '../../../node_modules/yasgui-yasqe/dist/yasqe.css'\nimport axios from 'axios'\nimport { Button } from 'reactstrap'\nimport { restructureResponse } from '../../helpers/sparql'\n\nclass Yasgui extends Component {\n constructor(props) {\n super(props)\n this.textArea = React.createRef()\n }\n\n state = {\n message: '',\n }\n\n // componentDidMount() {\n // setTimeout(() => {\n // this.yas = yasqe.fromTextArea(this.textArea.current);\n // // this.yas.setSize('100%')\n // let defaultValue = `PREFIX xsd: \n // select * where {\n // ?s ?p ?o .\n // } limit 100`;\n // this.yas.setValue(defaultValue);\n // // debugger\n // // this.textArea.current.focus()\n // }, 500);\n\n // // this.yas.on('blur', () => {\n // // // this.props.handleBlur(this.yas.getValue());\n // // this.loadData(this.yas.getValue())\n // // });\n // }\n\n componentDidUpdate(prevProps) {\n if (\n prevProps.withinSelectedTab !== this.props.withinSelectedTab &&\n this.props.withinSelectedTab\n ) {\n if (this.yas) return\n this.yas = new yasgui.Yasqe(this.textArea.current);\n\n // this.yas = yasgui.Yasqe.fromTextArea(this.textArea.current)\n let defaultValue = `PREFIX xsd: \nselect * where { \n ?s ?p ?o .\n} limit 2`\n this.yas.setValue(defaultValue)\n }\n }\n\n onRunClick = () => {\n this.loadData(this.yas.getValue())\n }\n\n loadData(query) {\n if (!this.props.repoURL) return console.log('Repo URL is not set!')\n\n if (query) {\n // default use proxy server\n let url = '/api/sparql/' + this.props.repoURL\n let data = {\n query: encodeURIComponent(query),\n }\n let headers = {\n Authorization: `Bearer ${localStorage.getItem('kvk-vb-token')}`,\n }\n if (this.props.repoURL.startsWith('http')) {\n // request sparql endpoint directly\n url = this.props.repoURL\n data =\n 'infer=true&limit=1000&offset=0&sameAs=true&query=' +\n encodeURIComponent(query)\n headers = {\n 'Content-Type': 'application/x-www-form-urlencoded',\n Accept: 'application/sparql-results+json',\n }\n }\n\n axios({\n method: 'post',\n url,\n data,\n headers,\n })\n .then((response) => {\n this.setState({\n data: response.data,\n message: '',\n })\n })\n .catch((err) => {\n console.log(err)\n this.setState({\n message: 'Er ging iets mis met laden van de data.',\n })\n })\n }\n }\n\n renderData() {\n if (this.state.message) {\n return
{this.state.message}
\n }\n\n if (!this.state.data) return null\n let headVars = this.state.data.head.vars\n let items = restructureResponse(this.state.data)\n\n return (\n \n \n \n {headVars.map((headVar, index) => (\n \n ))}\n \n \n \n {items.map((item, index) => {\n return (\n \n {headVars.map((headVar, index) => {\n let value = item[headVar] || ''\n return \n })}\n \n )\n })}\n \n
{headVar}
{value}
\n )\n }\n\n render() {\n return (\n
\n
\n
\n \n RUN\n \n
\n
{this.renderData()}
\n
\n )\n }\n}\n\nexport default Yasgui\n","import './bbutil'\r\nimport BBIFrame from './BBIFrame'\r\nimport PublishUtils from '../../../helpers/PublishUtils'\r\nimport AfterJS from '../../../helpers/AfterJS'\r\n\r\nclass BBMap extends BBIFrame {\r\n getUrl = () => `/${window.bbFolderName}/map/leafletWidgetDeploy171V1.html`\r\n\r\n constructor() {\r\n super()\r\n //console.log(\"BBMap Constructor\");\r\n this.scrolling = 'no'\r\n this.noEvents = false;\r\n this.usesParameters=false;\r\n }\r\n\r\n static getDescription() {\r\n return {\r\n name: 'BBMap',\r\n component: BBMap,\r\n label: 'Leaflet map',\r\n variables: [\r\n {\r\n name: 'query',\r\n type: 'yasgui',\r\n defaultQuery:\"PREFIX rdfs: \\n\\r\\n\\rselect distinct ?uri ?color ?geometry (concat(\\\"label: \\\",STR(?color)) as ?label)\\n\\r\\n\\rwhere\\n\\r{\\n\\rgraph <{{graph}}>\\n\\r {\\n\\r ?uri ?geometry.\\n\\r ?uri a ?cls.\\n\\r \\n\\r }\\n\\r ?cls rdfs:label ?color\\n\\r \\n\\r }\\n\\rlimit 1000\\n\\r \\n\\r#title: title;\\n\\r \\n\\r\",\r\n label:\r\n 'to fill the map. Use ?uri and ?geometry for WKT strings. Optionally use ?color for automatic coloring. hints for coloring #color:RGBA(0,255,0,1)@\"values\"infottext&extr text #baselayer:PDOK grijs; #title:titel;',\r\n },\r\n {\r\n name: 'basequery',\r\n type: 'yasgui',\r\n label:\r\n 'default for creating a map. when no parameters are available ',\r\n },\r\n {\r\n name: 'startWithGreyBase',\r\n type: 'boolean',\r\n label:\r\n 'start with grey baselayer ',\r\n },\r\n {\r\n name: 'startWithBase',\r\n type: 'text',\r\n label:\r\n 'selected baselayer like PDOK grijs or grijs, or luchtfoto (PDOK) ',\r\n },\r\n \r\n {\r\n name: 'height',\r\n type: 'text',\r\n label: 'height variable',\r\n },\r\n {\r\n name: 'publishVariable',\r\n type: 'text',\r\n label:\r\n 'Variabele in which an item URI is published, when a feature in the map is clicked.',\r\n },\r\n {\r\n name: 'subscribeVariable',\r\n type: 'text',\r\n label:\r\n 'Published uri variabele on which to listen to define selection.',\r\n },\r\n \r\n {\r\n name: 'noResultToast',\r\n type: 'text',\r\n label:\r\n 'message when there is no result',\r\n },\r\n\r\n \r\n\r\n\r\n AfterJS.getJSScriptAfterSelectionChange(),\r\n PublishUtils.getResetValueDef(),\r\n {\r\n name: 'className',\r\n type: 'text',\r\n label: 'iframe classNames',\r\n },\r\n ],\r\n }\r\n }\r\n\r\n state = { selectedUri: null }\r\n}\r\nexport default BBMap\r\n","import './bbutil'\r\nimport BBIFrame from './BBIFrame'\r\nimport PublishUtils from '../../../helpers/PublishUtils'\r\nimport AfterJS from '../../../helpers/AfterJS'\r\n\r\nclass BBMapExperimental extends BBIFrame {\r\n getUrl = () => `/${window.bbFolderName}/mapV2/leafletWidgetDeploy171V1.html`\r\n\r\n constructor() {\r\n super()\r\n //console.log(\"BBMap Constructor\");\r\n this.scrolling = 'no'\r\n this.noEvents = false;\r\n this.usesParameters=false;\r\n }\r\n\r\n static getDescription() {\r\n return {\r\n name: 'BB Map Experimental',\r\n component: BBMapExperimental,\r\n label: 'Leaflet map (Experimental)',\r\n experimental:true,\r\n variables: [\r\n {\r\n name: 'query',\r\n type: 'yasgui',\r\n defaultQuery:\"PREFIX rdfs: \\n\\r\\n\\rselect distinct ?uri ?color ?geometry (concat(\\\"label: \\\",STR(?color)) as ?label)\\n\\r\\n\\rwhere\\n\\r{\\n\\rgraph <{{graph}}>\\n\\r {\\n\\r ?uri ?geometry.\\n\\r ?uri a ?cls.\\n\\r \\n\\r }\\n\\r ?cls rdfs:label ?color\\n\\r \\n\\r }\\n\\rlimit 1000\\n\\r \\n\\r#title: title;\\n\\r \\n\\r\",\r\n label:\r\n 'to fill the map. Use ?uri and ?geometry for WKT strings. Optionally use ?color for automatic coloring. hints for coloring #color:RGBA(0,255,0,1)@\"values\"infottext&extr text #baselayer:PDOK grijs; #title:titel;',\r\n },\r\n {\r\n name: 'basequery',\r\n type: 'yasgui',\r\n label:\r\n 'default for creating a map. when no parameters are available ',\r\n },\r\n {\r\n name: 'startWithGreyBase',\r\n type: 'boolean',\r\n label:\r\n 'start with grey baselayer ',\r\n },\r\n \r\n {\r\n name: 'height',\r\n type: 'text',\r\n label: 'height variable',\r\n },\r\n {\r\n name: 'publishVariable',\r\n type: 'text',\r\n label:\r\n 'Variabele in which an item URI is published, when a feature in the map is clicked.',\r\n },\r\n {\r\n name: 'subscribeVariable',\r\n type: 'text',\r\n label:\r\n 'Published uri variabele on which to listen to define selection.',\r\n },\r\n \r\n {\r\n name: 'noResultToast',\r\n type: 'text',\r\n label:\r\n 'message when there is no result',\r\n },\r\n\r\n \r\n\r\n\r\n AfterJS.getJSScriptAfterSelectionChange(),\r\n PublishUtils.getResetValueDef(),\r\n {\r\n name: 'className',\r\n type: 'text',\r\n label: 'iframe classNames',\r\n },\r\n ],\r\n }\r\n }\r\n\r\n state = { selectedUri: null }\r\n}\r\nexport default BBMapExperimental\r\n","import './bbutil'\nimport BBIFrame from './BBIFrame'\nimport PublishUtils from '../../../helpers/PublishUtils'\nimport AfterJS from '../../../helpers/AfterJS'\nimport _ from 'lodash';\n\nclass BBMultiMap extends BBIFrame {\n getUrl = () => `/${window.bbFolderName}/multimap/leafletWidgetDeploy171V1.html`\n\n constructor() \n {\n super()\n //console.log(\"BBMap Constructor\");\n this.scrolling = 'no'\n this.noEvents = false\n this.usesParameters=false;\n }\n\n static getDescription() {\n return {\n name: 'BBMultiMap',\n component: BBMultiMap,\n label: 'Leaflet Multi map',\n variables: [\n {\n name: 'query',\n type: 'yasgui',\n label:\n 'to fill the multimap. Use ?uri ?label ?graph ?colorPred ?colorPredLabel ?labelPred ?labelPredLabel ?selectedColorPred ?selectedLabelPred ?extra for sparql definitions',\n },\n {\n name: 'useSparqlMapDefinitions',\n type: 'boolean',\n label: 'use the sparql results for multiple map definitions',\n },\n \n {\n name: 'height',\n type: 'text',\n label: 'height variable',\n },\n {\n name: 'publishVariable',\n type: 'text',\n label:\n 'Variable in which an item URI is published, when a feature in the map is clicked.',\n },\n {\n name: 'subscribeVariable',\n type: 'text',\n label:\n 'Published uri variable on which to listen to define selection.',\n },\n PublishUtils.getMultipleValueFormatOptions({\n name: 'multiSubscribeParameterType',\n label: 'For the variable above, in what format the value is provided.'\n }),\n {\n name: 'multiSelectionPublishVariable',\n type: 'text',\n label:\n 'Variable in which an item URIs are published, when multiple features on the map are selected.',\n },\n PublishUtils.getMultipleValueFormatOptions({\n name: 'multiSelectionParameterType',\n label: 'For the variable above, how to set the multivalue parameters'\n }),\n {\n name: 'multiSelectionShapePublishVariable',\n type: 'text',\n label:\n 'Variable in which the drawn shape for multiple feature selection is published.',\n },\n {\n name: 'multiSelectionShapePublishFormat',\n type: 'select',\n options: [\n { label: 'GeoJson', value: 'GeoJSON' },\n { label: 'WKT (Well Known Text)', value: 'WKT' }\n ],\n label:\n 'For the variable above, in which format to publish the geometry',\n },\n {\n name: 'multiSelectionType',\n type: 'select',\n options: [\n { label: 'hide drawing tools', value: 'hide' },\n { label: 'Intersect (features inside and touching the shape)', value: 'intersect' },\n { label: 'Within (only features inside the shape)', value: 'within' }\n ],\n label:\n 'The boolean operation to use for selection by shape',\n },\n {\n name: 'redrawMapOnSelectionChange',\n type: 'boolean',\n label: 'redraw map on selection change. This can affect performance, but is needed to reflect changes visually for multi-select'\n },\n {\n name: 'advancedEdit',\n type: 'boolean',\n label: 'add advanced edit menubar (requires refresh)'\n },\n {\n name: 'loadShapeControl',\n type: 'boolean',\n label: 'add load shape as a zip file button (requires refresh)'\n },\n {\n name: 'measurementB',\n type: 'boolean',\n label: 'add measurement button (requires refresh)'\n },\n {\n name: 'fullscreenB',\n type: 'boolean',\n label: 'add fullscreen button (requires refresh)'\n },\n {\n name: 'downloadGeoJSON',\n type: 'boolean',\n label: 'download geojson file (requires refresh)'\n },\n {\n name: 'geocoderB',\n type: 'boolean',\n label: 'add geocoder button (requires refresh)'\n },\n {\n name: 'removeLayerwidgetB',\n type: 'boolean',\n label: 'remove layerwidget button (requires refresh)'\n },\n {\n name: 'removePrintB',\n type: 'boolean',\n label: 'remove print button (requires refresh)'\n },\n {\n name: 'zoomHomeB',\n type: 'boolean',\n label: 'remove zoom home buttons (requires refresh)'\n },\n\n \n {\n name: 'streetview',\n type: 'boolean',\n label: 'add streetview buttons'\n },\n\n \n\n {\n name: 'noLegend',\n type: 'boolean',\n label: 'hide legend (reload is necessary for this to take effect)'\n },\n\n\n \n {\n name: 'subscribeExtraSparql',\n type: 'text',\n label:\n 'parameter containing extra sparql ',\n },\n {\n name: 'selectboundingbox',\n type: 'boolean',\n label:'use a boundingbox for selecting an object',\n },\n {\n name: 'fitbounds',\n type: 'boolean',\n label:'after a data update modify the view to fit ',\n },\n \n {\n name: 'allQueries',\n type: 'text',\n label:'parametername containing an array of all queries (not yet implemented, useful for downloadGIS function)',\n },\n {\n name: 'lineWidthScale',\n type: 'text',\n label:'lineWidthScale',\n },\n {\n name: 'lineWidthMinPixels',\n type: 'text',\n label:'lineWidthMinPixels',\n },\n \n\n AfterJS.getJSScriptAfterSelectionChange(),\n PublishUtils.getResetValueDef(),\n \n ],\n }\n }\n\n componentDidUpdate(prevProps, prevState) {\n super.componentDidUpdate(prevProps, prevState)\n const subscribeVariable = this.props.pubsub[this.props['subscribeVariable']]\n if (subscribeVariable !== this.state.subscribeVariable) {\n try {\n this.setState({ subscribeVariable })\n const newSelectedUris = PublishUtils.parseMultiplePropValue(this.props['multiSubscribeParameterType'], subscribeVariable)\n this.sendSelectedUrisToIframe(newSelectedUris)\n this.setSelectedUris(newSelectedUris)\n } catch(e) {\n console.error([\n `An error occurred whilst using subscribeVariable \"${this.props['subscribeVariable']}\" to update the selected uris. `,\n `Perhaps multiSubscribeParameterType \"${this.props['multiSubscribeParameterType']}\" needs a different setting. `,\n `Additional details:`,\n '\\n\\n',\n e.message].join('')\n )\n }\n }\n }\n\n setSelectedUris = (selectedUris = []) => {\n this.setState({ selectedUris })\n if (this.props['publishVariable']!=null)\n {\n this.props.publish(this.props['publishVariable'], selectedUris[0])\n }\n if ( this.props['multiSelectionPublishVariable']!=null)\n {\n this.props.publish(\n this.props['multiSelectionPublishVariable'],\n PublishUtils.getListAsSingleValue(this.props['multiSelectionParameterType'], selectedUris)\n )\n }\n }\n\n sendSelectedUrisToIframe = (selectedUris = []) => {\n this.iframeRef.current?.contentWindow?.postMessage?.({ type: 'update-selected-uris', selectedUris })\n }\n\n state = { selectedUris: [], subscribeVariable: undefined }\n}\n\nexport default BBMultiMap\n","import './bbutil'\nimport BBIFrame from './BBIFrame'\n\nclass BBTreeTable extends BBIFrame {\n getUrl = () => `/${window.bbFolderName}/w2ui/treetable.html`\n\n constructor() {\n super()\n // console.log(\"BBTREE TABLE Constructor\");\n this.scrolling = 'no'\n this.noEvents=false;\n this.usesParameters=false;\n }\n\n static getDescription() {\n return {\n name: 'BBTreeTable',\n component: BBTreeTable,\n label: 'BB Tree Table widget',\n variables: [\n {\n name: 'query',\n defaultQuery:\"PREFIX owl: \\n\\rPREFIX rdfs: \\n\\r\\n\\rselect distinct ?text ?uri ?parent \\n\\rwhere\\n\\r{\\n\\r \\n\\r graph <{{graph}}>\\n\\r {\\n\\r ?uri a owl:Class.\\n\\r ?uri rdfs:label ?text.\\n\\r optional {?uri rdfs:subClassOf ?parent. } \\n\\r \\n\\r \\n\\r }\\n\\r}\\n\\r\\n\\rlimit 1000\",\n type: 'yasgui',\n label: 'user ?text ?uri ?parent ?icon ',\n },\n {\n name: 'publishVariable',\n type: 'text',\n label:\n 'Variabele in which an item URI is published, when a feature in the tree is clicked.',\n },\n {\n name: 'subscribeVariable',\n type: 'text',\n label:\n 'Published uri variabele on which to listen to define selection.',\n },\n {\n name: 'publishVariable1',\n type: 'text',\n label:\n 'Variabele in which an item var1 is published (if available), when a feature in the tree is clicked.',\n },\n {\n name: 'publishTextVariable',\n type: 'text',\n label:\n 'Variabele in which the label is published , when a feature in the tree is clicked.',\n },\n {\n name: 'title',\n type: 'text',\n label: 'title',\n },\n {\n name: 'createRoot',\n type: 'boolean',\n label: 'createRoot',\n },\n {\n name: 'expandLevel',\n type: 'int',\n label: 'expandLevel',\n },\n {\n name: 'icon',\n type: 'text',\n label: 'icon',\n },\n \n {\n name: 'extraCSS',\n type: 'text',\n label: 'extra css',\n },\n {\n name: 'noInfoIcon',\n type: 'boolean',\n label: 'no info icon',\n },\n\n {\n name: 'groupByPropertyValue',\n type: 'text',\n label: 'group by propertyvalue',\n },\n\n {\n name: 'className',\n type: 'text',\n label: 'iframe classNames',\n },\n ],\n }\n }\n\n shouldComponentUpdate222(arg, arg2) {\n var update = false\n\n if (this.iface == null) {\n return true\n }\n\n if (this.props.subscribeVariable != null) {\n var selected = this.props.pubsub[this.props.subscribeVariable]\n if (this.selected !== selected) {\n this.iface.selectUri(selected)\n this.selected = selected\n return false\n }\n }\n\n /*\n \n\n try{\n //console.log(\"map receives an should update \",arg.data,this.iface.me.iface.me.props.data);\n if (arg.data!=this.iface.me.iface.me.props.data)\n {\n console.log(\"nieuw data ? update component\",arg.data);\n update= true;\n return true;\n }\n }\n catch(e){}\n\n\n var sub = arg.subscribeVariable;\n if (sub!=null)\n {\n // console.log(\"map can be updates by exertal variable \"+sub);\n var selection =arg.pubsub[sub];\n \n if (selection!=null)\n {\n // console.log(\"map found externalvaue\"+selection,this.state.selectedUri); \n if (this.state.selectedUri!=selection)\n {\n //console.log(\"map receives an external selection\",this.iface);\n \n this.iface.selectUri(selection);\n // this.setState({selectedUri:selection});\n }\n\n \n }\n }\n */\n\n return update\n }\n}\n\nexport default BBTreeTable\n","import './bbutil'\nimport BBIFrame from './BBIFrame'\n\nclass BBYasgui extends BBIFrame {\n getUrl = () => `/${window.bbFolderName}/static/iframes/yasgui/yasguiConf.html`\n\n constructor() {\n super()\n\n this.scrolling = 'yes'\n this.noEvents = false\n this.usesParameters=false;\n }\n\n static getDescription() {\n return {\n name: 'BBYasgui',\n component: BBYasgui,\n label: 'BB YasGUI',\n variables: [\n {\n name: 'query',\n type: 'yasgui',\n label:\n '?sparql ?options variabel (single). getOptions() is available in yasgui ',\n },\n {\n name: 'pusblishsparqlquery',\n type: 'string',\n label:\n 'publish the query into this parameter (single tab only)(refresh necessary)',\n },\n {\n name: 'escapeDoubleQuotesQuery',\n type: 'boolean',\n label: 'escape double quotes in the query',\n },\n {\n name: 'queryOnly',\n type: 'boolean',\n label: 'show only yasque ',\n },\n ],\n }\n }\n}\n\nexport default BBYasgui\n","import './bbutil'\nimport BBIFrame from './BBIFrame'\n\nclass BBYasguiLatest extends BBIFrame {\n getUrl = () => `/${window.bbFolderName}/static/iframes/yasgui/yasguiConfLatest.html`\n\n constructor() {\n super()\n\n this.scrolling = 'yes'\n this.noEvents = false\n }\n\n static getDescription() {\n return {\n name: 'BBYasguiLatest',\n component: BBYasguiLatest,\n label: 'BB YasGUI Latest',\n variables: [\n {\n name: 'query',\n type: 'yasgui',\n label:\n '?sparql ?options variabel (single). getOptions() is available in yasgui ',\n },\n {\n name: 'queryOnly',\n type: 'boolean',\n label: 'show only yasque ',\n },\n ],\n }\n }\n}\n\nexport default BBYasguiLatest\n","import './bbutil'\nimport BBIFrame from './BBIFrame'\n\nclass BBYasr extends BBIFrame {\n getUrl() {\n BBIFrame.scrolling = 'no'\n return `/${window.bbFolderName}/bbyasr.html`\n }\n\n static getDescription() {\n return {\n name: 'BBYasr',\n component: BBYasr,\n label: 'BB Yasr',\n variables: [\n {\n name: 'query',\n type: 'yasgui',\n label: 'to fill yasr chart. ',\n },\n {\n name: 'title',\n type: 'text',\n label: 'title of the chart ',\n },\n {\n name: 'chartType',\n type: 'select',\n label: 'type of the chart',\n options: [\n {\n label: 'Pie chart',\n value: 'PieChart',\n },\n {\n label: 'ColumnChart',\n value: 'ColumnChart',\n },\n {\n label: 'Bar chart',\n value: 'BarChart',\n },\n {\n label: 'Line chart',\n value: 'LineChart',\n },\n {\n label: 'Donut (nog niet aanwezig)',\n value: 'Donut',\n },\n {\n label: 'Gauge',\n value: 'Gauge',\n },\n ],\n },\n {\n name: 'ddd',\n type: 'boolean',\n label: '3D',\n },\n {\n name: 'height',\n type: 'text',\n label: 'height',\n },\n ],\n }\n }\n}\n\nexport default BBYasr\n","import './bbutil'\nimport BBIFrame from './BBIFrame'\n\nclass BBYasguiNotebook extends BBIFrame {\n getUrl() {\n BBIFrame.scrolling = 'yes'\n return `/${window.bbFolderName}/bbyasguinotebook.html`\n }\n}\n\nexport default BBYasguiNotebook\n","import { Component } from 'react'\n//import {jqeury,$} from 'jquery'\n\n//import svgIcons from 'trumbowyg/dist/ui/icons.svg'\n//const trumbowygIconsId = 'trumbowyg-icons'\n\n//require ('trumbowyg/dist/trumbowyg');\n\nclass BBNotebook extends Component {\n constructor(props) { //eslint-disable-line no-useless-constructor\n super(props)\n }\n /*\n componentWillMount() {\n\n }\n\n componentDidMount() {\n\n const {\n id,\n lang,\n buttons,\n semantic,\n resetCss,\n removeformatPasted,\n autogrow,\n data,\n disabled,\n onFocus,\n onBlur,\n onInit,\n onChange,\n onResize,\n onPaste,\n onOpenFullScreen,\n onCloseFullScreen,\n onClose,\n shouldUseSvgIcons,\n shouldInjectSvgIcons,\n svgIconsPath,\n btnsDef,\n plugins\n } = this.props\n\n if (shouldInjectSvgIcons && $(`#${trumbowygIconsId}`).length === 0) {\n $('body').prepend(`
${svgIcons}
`)\n }\n\n const trumbowygInstance = $(`#${id}`)\n .trumbowyg({\n lang: lang,\n btns: buttons,\n btnsDef: btnsDef,\n semantic: semantic,\n resetCss: resetCss,\n removeformatPasted: removeformatPasted,\n autogrow: autogrow,\n plugins: plugins,\n svgPath: shouldUseSvgIcons\n ? shouldInjectSvgIcons ? '' : svgIconsPath\n : false\n })\n\n if (onFocus) {\n trumbowygInstance.on('tbwfocus', onFocus)\n }\n\n if (onBlur) {\n trumbowygInstance.on('tbwblur', onBlur)\n }\n\n if (onInit) {\n trumbowygInstance.on('tbwinit', onInit)\n }\n\n if (onChange) {\n trumbowygInstance.on('tbwchange', onChange)\n }\n\n if (onResize) {\n trumbowygInstance.on('tbwresize', onResize)\n }\n\n if (onPaste) {\n trumbowygInstance.on('tbwpaste', onPaste)\n }\n\n if (onOpenFullScreen) {\n trumbowygInstance.on('tbwopenfullscreen', onOpenFullScreen)\n }\n\n if (onCloseFullScreen) {\n trumbowygInstance.on('tbwclosefullscreen', onCloseFullScreen)\n }\n\n if (onClose) {\n trumbowygInstance.on('tbwclose', onClose)\n }\n\n $(`#${id}`).trumbowyg('html', data)\n $(`#${id}`).trumbowyg(disabled === true ? 'disable' : 'enable')\n }\n\n componentWillReceiveProps(nextProps) {\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n\n return nextProps.data !== this.props.data\n || nextProps.disabled !== this.props.disabled\n }\n\n componentWillUpdate(nextProps, nextState) {\n\n }\n\n componentDidUpdate(prevProps, prevState) {\n $(`#${this.props.id}`).trumbowyg('html', this.props.data)\n $(`#${this.props.id}`).trumbowyg(this.props.disabled === true ? 'disable' : 'enable')\n }\n\n componentWillUnmount() {\n $(`#${this.props.id}`).trumbowyg('destroy')\n }\n\n render() {\n return (\n
\n )\n }\n\n\ndefaultProps = {\n buttons: [\n ['viewHTML'],\n ['formatting'],\n 'btnGrp-semantic',\n ['superscript', 'subscript'],\n ['link'],\n ['insertImage'],\n 'btnGrp-justify',\n 'btnGrp-lists',\n ['horizontalRule'],\n ['removeformat'],\n ['fullscreen']\n ],\n semantic: true,\n resetCss: false,\n removeformatPasted: false,\n autogrow: false,\n disabled: false,\n btnsDef: {},\n shouldUseSvgIcons: true,\n shouldInjectSvgIcons: true,\n plugins: {}\n};\n\n\n*/\n}\n\nexport default BBNotebook\n","import React from 'react'\n\nclass BBKGApiVizWidget extends React.Component {\n state = {\n value: '',\n }\n\n render() {\n console.log('rendering apiviz')\n return null\n }\n\n createVizJSON() {\n var ar = []\n\n console.log('created viz json', ar)\n\n return ar\n }\n test() {\n this.createVizJSON()\n this.loadData('select * where {?a ?b ?c} limit 10')\n }\n}\n\nexport default BBKGApiVizWidget\n\n/*[\n {\n \"id\": \"obj-persoon\",\n \"name\": \"Persoon\",\n \"path\": \"/personen\",\n \"input\": \"persoonsnummer\",\n \"rx\": 100,\n \"ry\": 100,\n \"x\": 300,\n \"y\": 200,\n \"color\": \"pink\",\n \"connections\": [],\n \"endpoints\": []\n },\n {\n \"id\": \"obj-maatschappelijk-activiteit\",\n \"name\": \"Maatschappelijke activiteit\",\n \"path\": \"/maatschappelijkeactiviteiten\",\n \"input\": \"kvknummer\",\n \"rx\": 100,\n \"ry\": 100,\n \"x\": 301,\n \"y\": 600,\n \"color\": \"lightblue\",\n \"connections\": [\n {\n \"connId\": \"obj-vestiging\",\n \"endpoints\": [\n {\n \"name\": \"Hoofdvestiging\",\n \"path\": \"/hoofdvestiging\",\n \"description\": \"Levert de hoofdvestiging die hoort bij de maatschappelijke activiteit met het opgegeven KVK-nummer\",\n \"response\": {\n \"vestiging\": {\n \"vestigingsnummer\": \"string\"\n }\n }\n },\n {\n \"name\": \"Vestigingen\",\n \"path\": \"/vestigingen\",\n \"description\": \"Levert de vestigingen die horen bij de maatschappelijke activiteit met het opgegeven KVK-nummer\",\n \"response\": [\n {\n \"vestiging\": {\n \"vestigingsnummer\": \"string\"\n }\n }\n ]\n }\n ]\n },\n {\n \"connId\": \"obj-persoon\",\n \"endpoints\": [\n {\n \"name\": \"Eigenaar\",\n \"path\": \"/eigenaar\"\n }\n ]\n }\n ],\n \"endpoints\": [\n {\n \"name\": \"Bezoeklocatie\",\n \"path\": \"/bezoeklocatie\",\n \"description\": \"Levert de afgeleide bezoeklocatie van de maatschappelijke activiteit met het opgegeven KVK-nummer\",\n \"response\": {\n \"registratietijdstipOpvoer\": \"2019-09-27T11:57:00.176Z\",\n \"registratietijdstipAfvoer\": \"2019-09-27T11:57:00.176Z\",\n \"datumAanvang\": \"string\",\n \"datumEinde\": \"string\",\n \"binnenlandseLocatie\": {\n \"registratietijdstipOpvoer\": \"2019-09-27T11:57:00.176Z\",\n \"registratietijdstipAfvoer\": \"2019-09-27T11:57:00.176Z\",\n \"locatienummer\": \"string\",\n \"bagLocatieIdentificatie\": \"string\",\n \"binnenlandsAdres\": {\n \"registratietijdstipOpvoer\": \"2019-09-27T11:57:00.176Z\",\n \"registratietijdstipAfvoer\": \"2019-09-27T11:57:00.176Z\",\n \"bagAdresIdentificatie\": \"string\",\n \"straatnaam\": \"string\",\n \"huisnummer\": 0,\n \"huisletter\": \"string\",\n \"huisnummertoevoeging\": \"string\",\n \"postcode\": \"string\",\n \"plaats\": \"string\"\n },\n \"aanduidingBijBinnenlandsAdres\": {\n \"registratietijdstipOpvoer\": \"2019-09-27T11:57:00.176Z\",\n \"registratietijdstipAfvoer\": \"2019-09-27T11:57:00.176Z\",\n \"aanduiding\": \"Bij\",\n \"referentielocatie\": {\n \"registratietijdstipOpvoer\": \"2019-09-27T11:57:00.176Z\",\n \"registratietijdstipAfvoer\": \"2019-09-27T11:57:00.176Z\",\n \"locatienummer\": \"string\",\n \"bagLocatieIdentificatie\": \"string\",\n \"binnenlandsAdres\": {\n \"registratietijdstipOpvoer\": \"2019-09-27T11:57:00.176Z\",\n \"registratietijdstipAfvoer\": \"2019-09-27T11:57:00.176Z\",\n \"bagAdresIdentificatie\": \"string\",\n \"straatnaam\": \"string\",\n \"huisnummer\": 0,\n \"huisletter\": \"string\",\n \"huisnummertoevoeging\": \"string\",\n \"postcode\": \"string\",\n \"plaats\": \"string\"\n }\n }\n },\n \"vrijeLocatie\": {\n \"registratietijdstipOpvoer\": \"2019-09-27T11:57:00.176Z\",\n \"registratietijdstipAfvoer\": \"2019-09-27T11:57:00.176Z\",\n \"locatiebeschrijving\": \"string\"\n }\n },\n \"buitenlandseLocatie\": {\n \"registratietijdstipOpvoer\": \"2019-09-27T11:57:00.176Z\",\n \"registratietijdstipAfvoer\": \"2019-09-27T11:57:00.176Z\",\n \"locatienummer\": \"string\",\n \"adres\": {\n \"registratietijdstipOpvoer\": \"2019-09-27T11:57:00.176Z\",\n \"registratietijdstipAfvoer\": \"2019-09-27T11:57:00.176Z\",\n \"adresregel1\": \"string\",\n \"adresregel2\": \"string\",\n \"adresregel3\": \"string\",\n \"land\": {\n \"naam\": \"string\",\n \"landCode\": 0,\n \"toegangsnummer\": \"string\"\n }\n }\n },\n \"toevoeging\": \"string\",\n \"afgeschermd\": \"ja\"\n }\n },\n {\n \"name\": \"Postlocatie\",\n \"path\": \"/postlocatie\",\n \"description\": \"Levert de afgeleide postlocatie van de maatschappelijke activiteit met het opgegeven KVK-nummer\",\n \"response\": {\n \"registratietijdstipOpvoer\": \"2019-09-27T11:57:49.585Z\",\n \"registratietijdstipAfvoer\": \"2019-09-27T11:57:49.585Z\",\n \"datumAanvang\": \"string\",\n \"datumEinde\": \"string\",\n \"binnenlandseLocatie\": {\n \"registratietijdstipOpvoer\": \"2019-09-27T11:57:49.585Z\",\n \"registratietijdstipAfvoer\": \"2019-09-27T11:57:49.585Z\",\n \"locatienummer\": \"string\",\n \"bagLocatieIdentificatie\": \"string\",\n \"binnenlandsAdres\": {\n \"registratietijdstipOpvoer\": \"2019-09-27T11:57:49.585Z\",\n \"registratietijdstipAfvoer\": \"2019-09-27T11:57:49.585Z\",\n \"bagAdresIdentificatie\": \"string\",\n \"straatnaam\": \"string\",\n \"huisnummer\": 0,\n \"huisletter\": \"string\",\n \"huisnummertoevoeging\": \"string\",\n \"postcode\": \"string\",\n \"plaats\": \"string\"\n },\n \"aanduidingBijBinnenlandsAdres\": {\n \"registratietijdstipOpvoer\": \"2019-09-27T11:57:49.585Z\",\n \"registratietijdstipAfvoer\": \"2019-09-27T11:57:49.585Z\",\n \"aanduiding\": \"Bij\",\n \"referentielocatie\": {\n \"registratietijdstipOpvoer\": \"2019-09-27T11:57:49.585Z\",\n \"registratietijdstipAfvoer\": \"2019-09-27T11:57:49.585Z\",\n \"locatienummer\": \"string\",\n \"bagLocatieIdentificatie\": \"string\",\n \"binnenlandsAdres\": {\n \"registratietijdstipOpvoer\": \"2019-09-27T11:57:49.585Z\",\n \"registratietijdstipAfvoer\": \"2019-09-27T11:57:49.585Z\",\n \"bagAdresIdentificatie\": \"string\",\n \"straatnaam\": \"string\",\n \"huisnummer\": 0,\n \"huisletter\": \"string\",\n \"huisnummertoevoeging\": \"string\",\n \"postcode\": \"string\",\n \"plaats\": \"string\"\n }\n }\n },\n \"vrijeLocatie\": {\n \"registratietijdstipOpvoer\": \"2019-09-27T11:57:49.585Z\",\n \"registratietijdstipAfvoer\": \"2019-09-27T11:57:49.585Z\",\n \"locatiebeschrijving\": \"string\"\n }\n },\n \"buitenlandseLocatie\": {\n \"registratietijdstipOpvoer\": \"2019-09-27T11:57:49.585Z\",\n \"registratietijdstipAfvoer\": \"2019-09-27T11:57:49.585Z\",\n \"locatienummer\": \"string\",\n \"adres\": {\n \"registratietijdstipOpvoer\": \"2019-09-27T11:57:49.585Z\",\n \"registratietijdstipAfvoer\": \"2019-09-27T11:57:49.585Z\",\n \"adresregel1\": \"string\",\n \"adresregel2\": \"string\",\n \"adresregel3\": \"string\",\n \"land\": {\n \"naam\": \"string\",\n \"landCode\": 0,\n \"toegangsnummer\": \"string\"\n }\n }\n },\n \"binnenlandsePostlocatie\": {\n \"registratietijdstipOpvoer\": \"2019-09-27T11:57:49.586Z\",\n \"registratietijdstipAfvoer\": \"2019-09-27T11:57:49.586Z\",\n \"locatienummer\": \"string\",\n \"adres\": {\n \"registratietijdstipOpvoer\": \"2019-09-27T11:57:49.586Z\",\n \"registratietijdstipAfvoer\": \"2019-09-27T11:57:49.586Z\",\n \"postadrestype\": \"Postbus\",\n \"nummer\": 0,\n \"postcode\": \"string\",\n \"plaats\": \"string\"\n }\n },\n \"toevoegingBezoeklocatie\": \"string\"\n }\n }\n ],\n \"response\": {\n \"kvkNummer\": \"string\",\n \"gegevensgebruik\": {\n \"directMailing\": \"WelDirectMailing\"\n }\n },\n \"description\": \"Levert de (basis)gegevens van de maatschappelijke activiteit met het opgegeven KVK-nummer\"\n },\n {\n \"id\": \"obj-vestiging\",\n \"name\": \"Vestiging\",\n \"path\": \"/vestigingen\",\n \"input\": \"vestigingsnummer\",\n \"rx\": 100,\n \"ry\": 100,\n \"x\": 700,\n \"y\": 700,\n \"color\": \"lightgreen\",\n \"connections\": [\n {\n \"connId\": \"obj-persoon\",\n \"endpoints\": [\n {\n \"name\": \"Eigenaar\",\n \"path\": \"/eigenaar\"\n }\n ]\n }\n ]\n }\n]\n*/\n","//import {GraphQLVoyager} from 'graphql-voyager';\n//import '../../../../node_modules/graphql-voyager/dist/voyager.css';\nimport BBIFrame from './BBIFrame'\nimport './bbutil'\n\n//var hans =require ('./test.json');\n\nclass BBVoyager extends BBIFrame {\n getUrl() {\n BBIFrame.scrolling = 'no'\n return `/${window.bbFolderName}/bbvoyager.html`\n }\n\n static getDescription() {\n return {\n name: 'BBVoyager',\n component: BBVoyager,\n label: 'UML Diagram Voyager',\n variables: [\n {\n name: 'query',\n type: 'yasgui',\n label: 'to fill the diagram. ( ?domainName ?rangeName ?propname)',\n defaultQuery: `\n PREFIX sh: \n PREFIX owl: \n PREFIX rdfs: \n \n \n select distinct ?domainName ?propName ?rangeName #?selectie \n \n from <{{versie}}>\n \n where \n {\n bind (<{{selection}}> as ?selectie)\n ?cls ^rdfs:subClassOf* ?selectie.\n filter (?cls not in (owl:Thing, rdfs:Resource) )\n #outgoing properties\n {\n ?selectie rdfs:label ?domainName.\n ?cls sh:property ?ps.\n ?ps sh:path ?prop.\n ?prop rdfs:label ?propName.\n # ?prop a owl:DatatypeProperty.\n {\n ?ps sh:datatype ?rangeName.\n }\n union\n {\n ?ps sh:class/rdfs:label ?rangeName\n }\n \n }\n \n union\n {\n # objecten die verwijzen naar geselecteerde object\n ?shape sh:property ?ps.\n ?ps sh:class ?cls.\n ?cls rdfs:label ?rangeName.\n ?shape rdfs:label ?domainName.\n ?ps sh:path/rdfs:label ?propName.\n \n }\n \n }\n `\n \n\n }, \n {\n name: 'height',\n type: 'string',\n label: 'optional css string for the height value',\n },\n ],\n }\n }\n}\n\nexport default BBVoyager\n","import { lazy } from 'react';\r\nexport default class BBAccordionDescriptor {\r\n\r\nstatic getDescription() {\r\n return {\r\n name: 'Accordion',\r\n component: lazy(() => import('./BBAccordion')),\r\n label: 'Accordion',\r\n variables: [\r\n {\r\n name: 'query',\r\n type: 'yasgui',\r\n label:\r\n 'use parameter ?label for accordion headings. use ?content for inner accordion content ',\r\n },\r\n\r\n {\r\n name: 'title',\r\n type: 'text',\r\n label: 'Titel boven de tabel',\r\n },\r\n\r\n {\r\n name: 'html',\r\n type: 'boolean',\r\n label: 'html text',\r\n },\r\n ],\r\n }\r\n }\r\n}\r\n","import React, { Component } from 'react'\nimport styles from './BBPicture.module.css'\n\nexport default class BBPicture extends Component {\n state = {}\n\n static getDescription() {\n return {\n name: 'Picture',\n component: BBPicture,\n label: 'Picture',\n variables: [\n {\n name: 'title',\n type: 'text',\n label: 'Titel boven het plaatje',\n },\n {\n name: 'pictureBaseEncoded',\n type: 'text',\n label:\n 'base encoded picture. converteer plaatjes via bijv https://www.base64-image.de/',\n },\n {\n name: 'src',\n type: 'text',\n label: 'referentie naar het plaatje',\n },\n ],\n }\n }\n\n render() {\n let encodedData = this.props.pictureBaseEncoded\n\n if (encodedData) {\n return (\n
\n {this.props.title && (\n
{this.props.title}
\n )}\n {/*eslint-disable-line jsx-a11y/alt-text*/}\n
\n )\n }\n\n let src = this.props.src\n if (src) {\n return (\n
\n {this.props.title && (\n
{this.props.title}
\n )}\n {/*eslint-disable-line jsx-a11y/alt-text*/}\n
\n )\n }\n return (\n
\n {this.props.title && (\n
{this.props.title}
\n )}\n
\n )\n }\n}\n","import React, { Component } from 'react'\n\nimport styles from './BBHTML.module.css'\nimport PublishUtils from '../../../helpers/PublishUtils'\n\nexport default class BBHTML extends Component {\n state = {}\n\n static getDescription() {\n return {\n name: 'BBHTML',\n component: BBHTML,\n label: 'BBHTML',\n variables: [\n {\n name: 'query',\n type: 'yasgui',\n label: 'use parameter {{parameters}} to change html ',\n },\n {\n name: 'html',\n type: 'text',\n label: 'html ',\n },\n {\n name: 'htmlgeenresultaat',\n type: 'text',\n label: 'html bij 0 resultaten',\n },\n {\n name: 'cls',\n type: 'text',\n label: 'class ',\n },\n ],\n }\n }\n\n render() {\n try\n {\n if (!this.props.html && !this.props.htmlgeenresultaat) {\n return null\n }\n let html = this.props.html\n var html2 = ''\n let data = this.props.data\n if (data != null && html != null && html!=\"\") {\n if (\n data.results != null &&\n data.results.bindings != null &&\n data.results.bindings.length > 0\n ) {\n var object = data.results.bindings[0]\n var html3 = html\n for (var key in object) {\n try {\n var value = object[key].value\n html3 = html3.replace('{{' + key + '}}', value).replace('{{' + key + '}}', value).replace('{{' + key + '}}', value).replace('{{' + key + '}}', value).replace('{{' + key + '}}', value).replace('{{' + key + '}}', value)\n } catch (e) {}\n }\n html2 += html3\n }\n\n if (\n this.props.htmlgeenresultaat != null &&\n data.results.bindings.length === 0\n ) {\n \n html2 = PublishUtils.processStringForParameters(this,this.props.htmlgeenresultaat)\n console.log(this.props.htmlgeenresultaat,html2);\n }\n } else {\n html2=html=\"\";\n try {html2 = PublishUtils.processStringForParameters(this,this.props.htmlgeenresultaat)} catch(e){}\n \n \n }\n\n html2 = html2.replace(/.*{{.*}}.*/, '')\n\n let cls = this.props.cls\n if (styles[cls] != null) cls = styles[cls]\n return
\n }\n catch(e)\n {\n console.log(\"mannaged \",e);\n if (this.props.htmlgeenresultaat!=null)\n {\n return PublishUtils.processStringForParameters(this.props.htmlgeenresultaat);\n }\n else\n {\n return ''\n }\n \n }\n \n }\n}\n","\nimport { lazy } from 'react';\nimport PublishUtils from '../../../../helpers/PublishUtils';\n\n\nexport default class BBDFormDescriptor {\n \n static getDescription() {\n \n return {\n name: 'BBDForm',\n component: lazy(() => import('./BBDForm')),\n label: 'BBDForm',\n variables: [\n {\n name: 'title',\n type: 'text',\n label: 'Titel boven de form',\n topicValueInterpolationEnabled: true\n },\n {\n name: 'classOrUri',\n type: 'text',\n label: 'uri van de owl/shacl class or individual (not implemented)',\n },\n {\n name: 'addEditToolbar',\n type: 'boolean',\n label: 'add edit toolbar (not implemented yet)',\n },\n {\n name: 'query',\n type: 'yasgui',\n defaultQuery:'PREFIX xsd: \\n\\r\\n\\r\\n\\rPREFIX rdfs: \\n\\r\\n\\r\\n\\rselect * where\\n\\r\\n\\r\\n\\r{\\n\\r\\n\\r { \\n\\r\\n\\r select ?uri \\n\\r\\n\\r where \\n\\r\\n\\r { \\n\\r\\n\\r bind (uri(concat(\\\"http://wistor.nl/ifc/appartement/\\\",replace(str(uuid()),\\\"urn:uuid:\\\",\\\"\\\") ))\\n\\r\\n\\r as ?uri) \\n\\r\\n\\r \\n\\r\\n\\r }\\n\\r\\n\\r }\\n\\r\\n\\r \\n\\r\\n\\r bind (<{{graph}}/extra> as ?graph)\\n\\r\\n\\r\\n\\r\\n\\r bind (\\\"Appartement\\\" as ?title)\\n\\r\\n\\r values ( ?propUri ?label ?value ?type ?hidden)\\n\\r\\n\\r {\\n\\r\\n\\r ( \\\"verdieping\\\" <{{storey}}> \\\"relation\\\" true)\\n\\r\\n\\r ( rdfs:label \\\"naam\\\" \\\"appartement naam\\\" xsd:string false)\\n\\r\\n\\r ( rdfs:comment \\\"extra\\\" \\\"beschrijving\\\" xsd:string false)\\n\\r\\n\\r ( \\\"nummer\\\" 1 xsd:integer false)\\n\\r\\n\\r \\n\\r\\n\\r }\\n\\r\\n\\r}',\n label:\n 'to fill the form. Use graph,title,uri, propUri, label,value, type ({xsd:types},select,relation,stringlist,textarea), optionLabel optionValue ?required regex, multiple,objectOfCls, disabled,hidden, addmodus. createClass for create button ',\n helpComponent: QueryHelp\n },\n \n {\n name: 'cancelbutton',\n type: 'boolean',\n label: 'show cancel button. (not implemented)',\n },\n \n {\n name: 'readonly',\n type: 'boolean',\n label: 'read-only, no buttons',\n },\n {\n name: 'masseditmode',\n type: 'boolean',\n label: \"use multiple uri's but only show prop distinctly. no values for now \"\n },\n \n {\n name: 'disabled',\n type: 'boolean',\n label: 'disabled',\n },\n {\n name: 'emptyText',\n type: 'text',\n label: 'text by empty sparql results',\n },\n {\n name: 'hyperlinkPar',\n type: 'text',\n label: 'parameter to update when selecting a hyperlink',\n },\n\n \n {\n name: 'submit',\n type: 'select',\n label: 'submit handling ',\n options: [\n { label: 'kies', value: 'kies' },\n { label: 'form command', value: 'formCommand' },\n { label: 'internal parameters', value: 'internalparameters' },\n { label: 'javascript', value: 'javascript' },\n \n ],\n },\n {\n name: 'submitbuttonlabel',\n type: 'text',\n label: 'label for the submit button',\n topicValueInterpolationEnabled: true\n },\n {\n name: 'ruleTagAfterSubmit',\n type: 'text',\n label: 'run rule with tag after succesful submit',\n },\n {\n name: 'parameters',\n type: 'json-text',\n label:\n 'mandatory extra parameters send in JSON format for rules,Parameters will be resolved before sending. keep it simple. no subchildren',\n },\n \n PublishUtils.getTimestampParametersDef(),\n {\n name: 'successMessage',\n type: 'text',\n label: 'form submission success message',\n },\n {\n name: 'failureMessage',\n type: 'text',\n label: 'failure message',\n },\n {\n name: 'closePopup',\n type: 'boolean',\n label: 'close popup after succesful submit',\n },\n ],\n }\n }\n\n \n}\n\nfunction QueryHelp() {\n return (\n
\n

\n ?collectionType variables now support the following: rdf:List{' '}\n (full uri: 'http://www.w3.org/1999/02/22-rdf-syntax-ns#List')\n

\n
\n )\n}\n","export const sideMenuConfigs = [\n {\n name: 'query',\n type: 'yasgui',\n label:\n 'Query to fill tree. First item should be the object label, the second the object URI, the third the parent URI. optional you can use icon, icon2 and icon3 variables for fa-fa icons ()',\n },\n {\n name: 'tabs',\n type: 'array',\n label: 'Tabs',\n },\n {\n name: 'tabSelectionSubscription',\n type: 'text',\n label: 'Variabele to listen to for tab selection',\n },\n {\n name: 'hideTabs',\n type: 'text',\n label:\n 'Variabele to listen to for tab visualisation. Use tab names to hide the tabs',\n },\n {\n name: 'disableHiddenTabs',\n type: 'boolean',\n label:\n 'show the hidden tabs but disable them and use a lock icon'\n },\n \n {\n name: 'icons',\n type: 'array',\n label:\n 'fa icon names for each tab such as box,cogs,coffee,envelope,hand-point-left,arrow-left,cube,database,gavel,gift,stop,',\n },\n {\n name: 'headertext',\n type: 'text',\n label: 'text for the header when expanded',\n },\n {\n name: 'lazyLoadingPages',\n type: 'boolean',\n label: 'does not load the tabs/pages in advance. Also returning to a page results in a reload',\n },\n {\n name: 'footertext',\n type: 'text',\n label: 'text for the footer',\n },\n {\n name: 'backgroundimage',\n type: 'text',\n label: 'background image',\n },\n {\n name: 'customStyling',\n type: 'boolean',\n label: 'Enable Custom Styling',\n },\n {\n name: 'sidemenuBackgroundColor',\n type: 'text',\n label: 'The background Color in Hex format. e.g. #000000',\n },\n {\n name: 'sidemenuTabColor',\n type: 'text',\n label: 'The background color of the tab in Hex format. e.g. #000000',\n },\n {\n name: 'sidemenuTabIconColor',\n type: 'text',\n label: 'The background color of the tab icon of the tab in Hex format. e.g. #000000',\n },\n {\n name: 'sidemenuTabTextColor',\n type: 'text',\n label: 'The text color of the tab in Hex format. e.g. #000000',\n },\n {\n name: 'sidemenuTabHoverColor',\n type: 'text',\n label: 'The background color of the tab on mouse hovering in Hex format. e.g. #000000',\n },\n {\n name: 'sidemenuTabIconHoverColor',\n type: 'text',\n label: 'The background color of the tab icon on mouse hovering in Hex format. e.g. #000000',\n },\n {\n name: 'sidemenuTabTextHoverColor',\n type: 'text',\n label: 'The text color of the tab on mouse hovering in Hex format. e.g. #000000',\n },\n {\n name: 'startCollapsed',\n type: 'boolean',\n label: 'start collapsed',\n },\n {\n name: 'onlyCollapsed',\n type: 'boolean',\n label: 'only collapsed',\n },\n {\n name: 'rightside',\n type: 'boolean',\n label: 'show menu on the rightside',\n },\n {\n name: 'className',\n type: 'text',\n label: 'css classNames',\n },\n {\n name: 'areas',\n type: 'json',\n // label: 'Column widths or row heights (separated by commas). Value can be a number (which will be set as flex values/verhoudingswaarden) or a px/% value',\n label: 'area definitions',\n },\n] as const\n","import { lazy } from 'react'\r\nimport { sideMenuConfigs } from './BBSideMenuConfigs'\r\n\r\nexport default class BBSideMenuDescriptor {\r\n\r\n static getDescription() {\r\n return {\r\n name: 'BBSideMenu',\r\n component: lazy(() => import('./BBSideMenu')),\r\n label: 'BBSideMenu',\r\n variables: sideMenuConfigs,\r\n }\r\n }\r\n\r\n}","\nimport { lazy } from 'react';\n\nexport default class BBEChartDescriptor {\n static getDescription() {\n return {\n name: 'BBEChart',\n component: lazy(() => import('./BBEChart')),\n label: 'BBEChart',\n variables: [\n {\n name: 'query',\n type: 'yasgui',\n defaultQuery:\"select distinct ?label (count(distinct ?uri) as ?amount) \\r\\n where \\r\\n { \\r\\n graph <{{graph}}> \\r\\n{\\r\\n?uri a ?cls\\r\\n}\\r\\n ?cls rdfs:label ?label \\r\\n} \\r\\n group by ?label \\r\\n order by ?label\",\n label:\n 'Query to fill the chart. first parameter is the type, second the amount for a pie/donut',\n },\n {\n name: 'charttype',\n type: 'select',\n label: 'charttype',\n options: [\n { label: 'Kies', value: 'Kies' },\n { label: 'Pie', value: 'Pie' },\n { label: 'Small pie', value: 'SmallPie' },\n { label: 'Doughnut', value: 'Doughnut' },\n { label: 'Small doughnut', value: 'DoughnutSmall' },\n { label: 'Bar', value: 'Bar' },\n { label: 'Column', value: 'Col' },\n { label: 'stacked Column', value: 'ColStacked' },\n { label: 'stacked Bar', value: 'BarStacked' },\n { label: 'Gauge', value: 'gauge' },\n ],\n },\n {\n name: 'title',\n type: 'text',\n label: 'title',\n },\n {\n name: 'width',\n type: 'text',\n label: 'width css (97%)',\n },\n {\n name: 'height',\n type: 'text',\n label: 'height css (95%) ',\n },\n {\n name: 'optionOptions',\n type: 'text',\n label: 'extra options for echart {\"series\":[{\"bargap\":0}]}'\n },\n {\n name: 'color',\n type: 'array',\n label: 'optional colorscheme series,hexcolor... ok,#ffaacc',\n },\n {\n name: 'legend',\n type: 'boolean',\n label: 'legend',\n },\n {\n name: 'defaultMenu',\n type: 'boolean',\n label: 'defaultMenu',\n },\n {\n name: 'stringToColor',\n type: 'boolean',\n label: 'use string values to color chart',\n },\n {\n name: 'gradientColors',\n type: 'boolean',\n label: 'use gradient colors',\n },\n {\n name: 'enableZoom',\n type: 'boolean',\n label: 'make the chart zoomable',\n },\n {\n name: 'labelsInChart',\n type: 'boolean',\n label: 'labels in the chart',\n },\n {\n name: 'popupLabelExtension',\n type: 'text',\n label: 'extension string for popup values (euro or stuks) ',\n },\n {\n name: 'popupLabelFixedFormat',\n type: 'text',\n label: '1 or 2 or..',\n },\n\n\n \n\n ],\n }\n }\n\n \n}\n","import './bbutil'\nimport BBIFrame from './BBIFrame'\n\nclass BBBoorkern extends BBIFrame {\n getUrl = () => `/${window.bbFolderName}/boorkern/vboorkern.html`\n\n constructor() {\n super()\n //console.log(\"boorkern Constructor\");\n this.scrolling = 'no'\n this.noEvents = false;\n this.usesParameters=false;\n }\n\n static getDescription() {\n return {\n name: 'BBBoorkern',\n component: BBBoorkern,\n label: 'virtuele boorkern',\n variables: [\n {\n name: 'query',\n type: 'yasgui',\n label: 'to fill the map. ',\n },\n {\n name: 'height',\n type: 'text',\n label: 'height variable',\n },\n {\n name: 'publishVariable',\n type: 'text',\n label:\n 'Variabele in which an item URI is published, when a feature in the figure is clicked.',\n },\n {\n name: 'subscribeVariable',\n type: 'text',\n label:\n 'Published uri variabele on which to listen to define selection.(not yet implemented). use selectedUri instead (set a default value via ::) ',\n },\n {\n name: 'className',\n type: 'text',\n label: 'iframe classNames',\n },\n ],\n }\n }\n\n state = { selectedUri: null }\n\n reExecuteSparql() {\n // console.log(\"re execute sparql called \");\n this.updateMe()\n }\n}\nexport default BBBoorkern\n","import { lazy } from 'react'\r\nimport { FontList } from \"../../../FontList\"\r\nimport PublishUtils from '../../../../helpers/PublishUtils'\r\n\r\nexport default class StartRuleButtonDescriptor {\r\n \r\n static getDescription() {\r\n return {\r\n name: 'StartRuleButton',\r\n component: lazy(() => import('./StartRuleButton')),\r\n label: 'StartRuleButton',\r\n variables: [\r\n \r\n \r\n {\r\n name: 'disabled',\r\n type: 'boolean',\r\n label: 'disabled',\r\n },\r\n {\r\n name: 'title',\r\n type: 'text',\r\n label: 'button label',\r\n topicValueInterpolationEnabled: true\r\n },\r\n {\r\n name: 'beginIcon',\r\n type: 'text',\r\n label: 'begin icon - available prefixes: `fa-` `mui-` `radix-`. Without prefix is deprecated.',\r\n },\r\n {\r\n name: 'endIcon',\r\n type: 'text',\r\n label: 'end icon - available prefixes: `fa-` `mui-` `radix-`. Without prefix is deprecated.',\r\n },\r\n {\r\n name: 'tooltip',\r\n type: 'text',\r\n label: 'button tooltip',\r\n topicValueInterpolationEnabled: true\r\n },\r\n {\r\n name: 'startRule',\r\n type: 'text',\r\n label: 'start rule with tag. Also EMPTY can be used.',\r\n },\r\n \r\n {\r\n name: 'parameters',\r\n type: 'json-text',\r\n label:\r\n 'extra parameters send in JSON format,Parameters will be resolved before sending. keep it simple. no subchildren',\r\n },\r\n \r\n \r\n \r\n PublishUtils.getTimestampParametersDef(),\r\n {\r\n name: 'failureMessage',\r\n type: 'text',\r\n label: 'failure message',\r\n },\r\n\r\n {\r\n name: 'customStyling',\r\n type: 'boolean',\r\n label: 'Enable Custom Styling',\r\n },\r\n {\r\n name: 'buttonBorderRadius',\r\n type: 'text',\r\n label: 'Custom Styling: button-border-radius (examples: \"2lh\", \"50%\", \"1.2em\"). See https://developer.mozilla.org/en-US/docs/Web/CSS/border-radius',\r\n },\r\n {\r\n name: 'textColor',\r\n type: 'text',\r\n label: 'Custom Styling: text-color (examples: \"green\", \"#FF0000\", \"hsl(0 100% 50% / 50%)\"). See https://developer.mozilla.org/en-US/docs/Web/CSS/color_value',\r\n },\r\n {\r\n name: 'bgColor',\r\n type: 'text',\r\n label: 'Custom Styling: background-color (examples: \"green\", \"#FF0000\", \"hsl(0 100% 50% / 50%)\"). See https://developer.mozilla.org/en-US/docs/Web/CSS/color_value',\r\n },\r\n {\r\n name: 'hasButtonShadow',\r\n type: 'boolean',\r\n label: 'Custom Styling: enable button-shadow'\r\n },\r\n {\r\n name: 'buttonFontSize',\r\n type: 'text',\r\n label: 'Custom Styling: button-font-size'\r\n },\r\n {\r\n name: 'buttonFontFamily',\r\n type: 'text',\r\n label: 'Custom Styling: button-font-family',\r\n helpComponent: FontList\r\n },\r\n ]\r\n }\r\n }\r\n\r\n \r\n}\r\n","import { Button } from '@mui/material'\nimport { Component } from 'react'\nimport projectStyles from '../../Project.module.css'\nimport buttonStyles from './Button.module.css'\nimport { Icon } from '../Icon'\nimport { FontList } from \"../../FontList\"\n\nclass BBLinkButtons extends Component {\n static getDescription() {\n return {\n name: 'BBLinkButtons',\n component: BBLinkButtons,\n label: 'BB Link Buttons',\n variables: [\n {\n name: 'labels',\n type: 'array',\n label: 'label,label2,etc',\n topicValueInterpolationEnabled: true,\n },\n {\n name: 'links',\n type: 'array',\n label: 'url1,url2,etc',\n topicValueInterpolationEnabled: true,\n },\n {\n name: 'openLinksInTheSameTab',\n type: 'boolean',\n label: 'Open links in the same tab'\n },\n {\n name: 'title',\n type: 'text',\n label: 'titel',\n },\n {\n name: 'beginIcons',\n type: 'array',\n label: 'begin-icons: \"icon1,icon2,etc\"'\n },\n {\n name: 'endIcons',\n type: 'array',\n label: 'end-icons: \"icon1,icon2,etc\"'\n },\n {\n name: 'customStyling',\n type: 'boolean',\n label: 'Enable Custom Styling',\n },\n {\n name: 'buttonBorderRadius',\n type: 'text',\n label: 'Custom Styling: button-border-radius (examples: \"2lh\", \"50%\", \"1.2em\"). See https://developer.mozilla.org/en-US/docs/Web/CSS/border-radius',\n },\n {\n name: 'textColor',\n type: 'text',\n label: 'Custom Styling: text-color (examples: \"green\", \"#FF0000\", \"hsl(0 100% 50% / 50%)\"). See https://developer.mozilla.org/en-US/docs/Web/CSS/color_value',\n },\n {\n name: 'bgColor',\n type: 'text',\n label: 'Custom Styling: background-color (examples: \"green\", \"#FF0000\", \"hsl(0 100% 50% / 50%)\"). See https://developer.mozilla.org/en-US/docs/Web/CSS/color_value',\n },\n {\n name: 'hasButtonShadow',\n type: 'boolean',\n label: 'Custom Styling: enable button-shadow'\n },\n {\n name: 'marginBetweenButtons',\n type: 'text',\n label: 'Custom Styling: margin-between-buttons (example: \"0.4em\")',\n },\n {\n name: 'buttonContainerPadding',\n type: 'text',\n label: 'Custom Styling: button-container-padding (example: \"0.4em\")'\n },\n {\n name: 'buttonFontSize',\n type: 'text',\n label: 'Custom Styling: button-font-size'\n },\n {\n name: 'buttonFontFamily',\n type: 'text',\n label: 'Custom Styling: button-font-family',\n helpComponent: FontList\n },\n ],\n }\n }\n\n render() {\n const fontSize = this.props.buttonFontSize ? this.props.buttonFontSize : 'inherit'\n const fontFamily = this.props.buttonFontFamily ? this.props.buttonFontFamily : 'inherit'\n return (\n \n {this.props.title && (\n
{this.props.title}
\n )}\n {this.props.labels?.map((label, i) => {\n\n if (!this.props.customStyling) return (\n \n {label}\n \n )\n\n return (\n \n {label}\n \n )\n })}\n
\n )\n }\n}\n\nfunction OriginalButton(props) {\n return (\n \n
\n {props.beginIcon && }\n {props.children}\n {props.endIcon && }\n
\n \n )\n}\n\nfunction CustomStyleButton(props) {\n return (\n }\n startIcon={props.beginIcon && }\n data-has-button-shadow={Boolean(props.hasButtonShadow)}\n >\n {props.children}\n \n )\n}\n\nexport default BBLinkButtons\n","\r\nimport { lazy } from 'react';\r\n\r\nexport default class BBStructuredTextDescriptor{\r\n\r\n\r\nstatic getDescription() {\r\n return {\r\n name: 'BBStructuredText',\r\n component: lazy(() => import('./BBStructuredText')),\r\n label: 'BB Structured Text',\r\n variables: [\r\n {\r\n name: 'query',\r\n type: 'yasgui',\r\n label: 'use parameter ?header ?headerText ?content ',\r\n },\r\n {\r\n name: 'paperbackground',\r\n type: 'select',\r\n label: 'paper background',\r\n options: [\r\n {\r\n label: 'default',\r\n value: 'noneWhite',\r\n },\r\n {\r\n label: 'grey',\r\n value: 'bbgrey',\r\n },\r\n {\r\n label: 'white',\r\n value: 'bbwhite',\r\n },\r\n {\r\n label: 'default grey',\r\n value: 'noneGrey',\r\n },\r\n ],\r\n },\r\n {\r\n name: 'papercolor',\r\n type: 'select',\r\n label: 'paper color',\r\n options: [\r\n {\r\n label: 'default',\r\n value: 'noneWhite',\r\n },\r\n {\r\n label: 'white paper',\r\n value: 'bbwhitePaper',\r\n },\r\n {\r\n label: 'grey paper',\r\n value: 'bbgreyPaper',\r\n },\r\n\r\n {\r\n label: 'default grey',\r\n value: 'noneGrey',\r\n },\r\n ],\r\n },\r\n\r\n {\r\n name: 'cls',\r\n type: 'text',\r\n label: 'class ',\r\n },\r\n ],\r\n }\r\n }\r\n}","import { lazy } from 'react';\nexport default class BBKVKProductTemplateDescriptor {\n\n static getDescription() {\n return {\n name: 'BBKVKProductTemplate',\n component: lazy(() => import('./BBKVKProductTemplate')), \n label: 'BBK KVK Product Template',\n variables: [\n {\n name: 'title',\n type: 'text',\n label: 'Titel boven de template',\n },\n {\n name: 'query',\n type: 'yasgui',\n label:\n 'to fill the form. Use title,uri, propUri, label,value, type (xsd,select), optionLabel optionValue ?required regex, multiple,objectOfCls ',\n },\n {\n name: 'buttons',\n type: 'array',\n label: 'buttons',\n },\n {\n name: 'popupFullScreen',\n type: 'array',\n label: 'popupFullScreen',\n },\n {\n name: 'popupTitle',\n type: 'array',\n label: 'popupTitle',\n },\n {\n name: 'publishVariable',\n type: 'text',\n label: 'Variabele in which URI is published when button is clicked.',\n },\n\n {\n name: 'className',\n type: 'text',\n label: 'iframe classNames',\n },\n ],\n }\n }\n\n \n \n}\n","import React, { Component } from 'react'\nimport { Tooltip, IconButton } from '@mui/material'\nimport ChevronLeft from '@mui/icons-material/ChevronLeft'\n\nimport Tab from '../Tab'\n\nexport default class BBBackMenu extends Component {\n state = { anchorEl: false, selections: [] }\n\n static getDescription() {\n return {\n name: 'BBBackMenu',\n component: BBBackMenu,\n label: 'BackMenu',\n variables: [\n {\n name: 'parameter',\n type: 'text',\n label: 'parameter ',\n },\n {\n name: 'changeSelectedTabs',\n type: 'boolean',\n label: 'also set tab selections ',\n },\n ],\n }\n }\n\n shouldComponentUpdate(props, state) {\n try {\n var newValue = props.pubsub[props.parameter]\n if (newValue == null) return true\n\n if (this.state.selections.length === 0) {\n var o = { parameter: newValue, tabs: {} }\n for (var n in Tab.registeredTabComponents) {\n let t = Tab.registeredTabComponents[n]\n o.tabs[t.getTabId()] = t.state.selectedIndex\n }\n this.state.selections.push(o)\n } else {\n var lastValue =\n this.state.selections[this.state.selections.length - 1].parameter\n if (lastValue !== newValue) {\n o = { parameter: newValue, tabs: {} }\n\n for (const n in Tab.registeredTabComponents) {\n let t = Tab.registeredTabComponents[n]\n o.tabs[t.getTabId()] = t.state.selectedIndex\n }\n this.state.selections.push(o)\n }\n }\n // console.log(this.state.selections);\n } catch (e) {\n console.log(e)\n }\n //console.log(par,par2);\n return true\n }\n\n handleClickBack = (event) => {\n //this.setState({anchorEl:event.currentTarget});\n\n if (this.state.selections.length === 0) return\n if (this.state.selections.length === 1) return\n // min 2 dus kan terug\n var rValue = this.state.selections[this.state.selections.length - 2]\n\n if (this.props.parameter != null) {\n this.props.publish(this.props.parameter, rValue.parameter)\n this.state.selections.pop()\n this.state.selections.pop()\n }\n //this.setState({anchorEl:null});\n if (this.props.changeSelectedTabs) {\n for (var n in Tab.registeredTabComponents) {\n var t = Tab.registeredTabComponents[n]\n for (var tabId in rValue.tabs) {\n if (tabId === t.getTabId()) {\n var sel = rValue.tabs[tabId]\n if (t.state.selectedIndex !== sel) {\n //console.log(\"found a tab that needs to be switched\",t);\n t.setState({ selectedIndex: sel })\n }\n }\n }\n }\n }\n }\n\n handleClose = () => {\n this.setState({ anchorEl: null })\n }\n\n render() {\n var disabled = false\n if (this.state.selections.length < 2) {\n disabled = true\n }\n //var sel = this.state.selections;\n return (\n
\n \n \n {' '}\n \n \n \n \n \n
\n )\n /*\n \n \n {sel.map(index =>(\n hallo uri:{sel[index]}\n \n ))\n }\n \n \n )\n */\n }\n}\n","import { lazy } from 'react';\n\n class BBSimplePushButtonDescriptor{\n \n static getDescription() {\n return {\n name: 'BBSimplePushButton',\n component: lazy(() => import('./BBSimplePushButton')), \n category:\"Default\",\n label: 'Simple Push Button',\n variables: [\n {\n name: 'label',\n type: 'text',\n label: 'label',\n },\n {\n name: 'beginIcon',\n type: 'text',\n label: 'begin icon',\n },\n {\n name: 'endIcon',\n type: 'text',\n label: 'end icon',\n },\n {\n name: 'enabled',\n type: 'text',\n label: 'parameter true/false for enabling button',\n },\n\n {\n name: 'tooltip',\n type: 'text',\n label: 'button tooltip',\n },\n\n {\n name: 'query',\n type: 'yasgui',\n label: 'for parameters for label for example',\n },\n {\n name: 'link',\n type: 'text',\n label: 'simple link which will be called when the button is clicked',\n },\n {\n name: 'postLink',\n type: 'text',\n label:\n 'alternative to link: a post link with optionally a postObject. keywords allowed such as command for command servlet calls',\n },\n {\n name: 'postObject',\n type: 'text',\n label:\n 'object send via postLink adres. Parameters will be resolved before sending. keep it simple. no subchildren',\n },\n {\n name: 'postDownload',\n type: 'boolean',\n label: 'triggers a download',\n },\n {\n name: 'downloadFileName',\n type: 'text',\n label: 'download file name ',\n },\n {\n name: 'messageLWTTitle',\n type: 'text',\n label: 'show message title for long waiting time',\n },\n {\n name: 'messageLWT',\n type: 'text',\n label: 'show message for long waiting time',\n },\n \n \n {\n name: 'changeParameter',\n type: 'text',\n label: 'change parameter value when succesfull',\n },\n {\n name: 'setInitialValueChangeParameter',\n type: 'boolean',\n label: 'set initial value for change parameter ',\n },\n {\n name: 'successMessage',\n type: 'text',\n label: 'shows message after successful operation ',\n },\n {\n name: 'fontSize',\n type: 'text',\n label: 'size of the text ',\n },\n {\n name: 'sparqlqueryrapport',\n type: 'yasgui',\n label: 'sparql query rapport. (optionally use #template:)',\n },\n\n\n\n\n ],\n }\n }\n}\n \nexport default BBSimplePushButtonDescriptor\n","import BBIFrame from './BBIFrame'\nimport PublishUtils from '../../../helpers/PublishUtils'\n\nexport default class BBVenn extends BBIFrame {\n getUrl = () => `/${window.bbFolderName}/w2ui/venn.html`\n\n constructor() {\n super()\n this.scrolling = 'false'\n this.noEvents = false\n }\n\n static getDescription() {\n return {\n name: 'BBVenDiagram',\n component: BBVenn,\n label: 'BB Venn diagram',\n variables: [\n {\n name: 'query',\n type: 'yasgui',\n label:\n 'use ?set and ?amount. ?set values must be space separated classes. ',\n },\n\n {\n name: 'publishVariable',\n type: 'text',\n label:\n 'Variabele in which an item URI is published, when a feature in the map is clicked.',\n },\n\n PublishUtils.getResetValueDef(),\n ],\n }\n }\n}\n","import './bbutil'\nimport BBIFrame from './BBIFrame'\nimport PublishUtils from '../../../helpers/PublishUtils'\n\nclass BBForm extends BBIFrame {\n getUrl = () => `/${window.bbFolderName}/w2ui/form.html`\n\n constructor() {\n super()\n this.scrolling = 'true'\n this.noEvents = false\n }\n static getDescription() {\n return {\n name: 'BBForm',\n component: BBForm,\n label: 'BB Form widget',\n variables: [\n {\n name: 'query',\n type: 'yasgui',\n label:\n 'to fill the map. Use ?uri and ?geometry for WKT strings. Optionally use ?color for automatic coloring ',\n },\n {\n name: 'fields',\n type: 'json',\n label: 'json for w2uiform fields',\n },\n\n {\n name: 'tabs',\n type: 'text',\n label: 'w2ui tabs definitie',\n },\n {\n name: 'filetype',\n type: 'text',\n label: 'file type extension (e.g.:ifc) ',\n },\n {\n name: 'service',\n type: 'select',\n label: 'service upload or command',\n options: [\n {\n label: 'command',\n value: 'command',\n },\n {\n label: 'upload',\n value: 'upload',\n },\n ],\n },\n \n {\n name: 'commando',\n type: 'text',\n label: 'commando',\n },\n {\n name: 'dataCommand',\n type: 'text',\n label: 'extra data send to the server via json',\n },\n {\n name: 'endJS',\n type: 'text',\n label:\n 'js after successfull submit (getIface().me.props.closeDialog())',\n },\n PublishUtils.getTimestampParametersDef(),\n ],\n }\n }\n}\n\nexport default BBForm\n","\r\nimport { lazy } from 'react';\r\nimport PublishUtils from '../../../helpers/PublishUtils'\r\n\r\nexport default class BBUploadDescriptor {\r\n \r\n \r\n\r\n\r\n\r\n static getDescription() {\r\n return {\r\n name: 'BBUpload',\r\n component: lazy(() => import('./BBUpload')),\r\n label: 'BB Upload widget',\r\n variables: [\r\n {\r\n name: 'serverUrl',\r\n type: 'text',\r\n label: 'server url (full url or upload)',\r\n },\r\n {\r\n name: 'command',\r\n type: 'text',\r\n label: 'command for server {validateGarantie,uploadAnyXLSX,uploadAnyFile:ruletag}',\r\n },\r\n {\r\n name: 'uploadText',\r\n type: 'text',\r\n label: 'text for the widget',\r\n },\r\n {\r\n name: 'processingText',\r\n type: 'text',\r\n label: 'text for the widget when uploading and processing',\r\n },\r\n {\r\n name: 'fileExtensions',\r\n type: 'text',\r\n label: 'fileExtensions xslx,js',\r\n },\r\n {\r\n name: 'fields',\r\n type: 'json',\r\n label: 'json for w2uiform fields',\r\n },\r\n {\r\n name: 'tabs',\r\n type: 'text',\r\n label: 'optional w2ui tabs definitie',\r\n },\r\n\r\n {\r\n name: 'multiple',\r\n type: 'boolean',\r\n label: 'multiple files ',\r\n },\r\n {\r\n name: 'extraJSON',\r\n type: 'text',\r\n label: 'extra json info. parameters may be used. {\"graph\":\"{{graph}}\"}',\r\n },\r\n {\r\n name: 'autoUpload',\r\n type: 'boolean',\r\n label: 'auto upload ',\r\n },\r\n {\r\n name: 'resultUri',\r\n type: 'text',\r\n label: 'parameter that will be updated after succesful upload containing uri where more information can be found on the uploaded ',\r\n },\r\n \r\n {\r\n name: 'successEval',\r\n type: 'text',\r\n label:\r\n 'javascript code after successfull upload... e.g. me.downloadReport(\"garantierapport\",\"garantie.html\") ',\r\n },\r\n\r\n PublishUtils.getTimestampParametersDef(),\r\n \r\n ],\r\n }\r\n }\r\n}","import './bbutil'\nimport BBIFrame from './BBIFrame'\n\nclass BBNOML extends BBIFrame {\n getUrl = () => `/${window.bbFolderName}/noml.html`\n\n constructor() {\n super()\n\n this.scrolling = 'no'\n this.noEvents = false\n }\n\n static getDescription() {\n return {\n name: 'BBNOML',\n component: BBNOML,\n label: 'BBNOML',\n variables: [\n {\n name: 'data',\n type: 'text',\n label: 'noml input',\n },\n ],\n }\n }\n}\nexport default BBNOML\n","import { lazy } from 'react';\nimport { FontList } from \"../../../FontList\"\nexport default class ButtonPopupDescriptor {\n\nstatic getDescription() {\n return {\n name: 'BB ButtonPopup',\n component: lazy(() => import('./ButtonPopup')),\n label: 'Button Popup',\n variables: [\n {\n name: 'title',\n type: 'text',\n label: 'button label',\n topicValueInterpolationEnabled: true\n },\n {\n name: 'beginIcon',\n type: 'text',\n label: 'begin icon',\n },\n {\n name: 'endIcon',\n type: 'text',\n label: 'end icon',\n },\n\n {\n name: 'popupFullScreen',\n type: 'boolean',\n label: 'popup fullScreen not implemented',\n },\n {\n name: 'popupMinWidth',\n type: 'string',\n label: 'popup min width in CSS, e.g. 600px',\n },\n {\n name: 'popupMaxWidth',\n type: 'string',\n label: 'popup max width in CSS, e.g. 100vw for max screen width',\n },\n {\n name: 'popupMinHeight',\n type: 'string',\n label: 'popup min height in CSS, e.g. 600px',\n },\n {\n name: 'popupMaxHeight',\n type: 'string',\n label: 'popup max height in CSS, e.g. 100vh for max screen height',\n },\n {\n name: 'popupContentPadding',\n type: 'string',\n label: 'popup content padding in CSS, e.g. 0px for zero padding',\n },\n {\n name: 'popupCloseOnBackdropClick',\n type: 'boolean',\n label: 'close popup when clicking outside the popup',\n },\n {\n name: 'popupCloseOnEscapeKey',\n type: 'boolean',\n label: 'close popup when pressing Escape',\n },\n {\n name: 'popupTitle',\n type: 'text',\n label: 'popupTitle',\n topicValueInterpolationEnabled: true\n },\n\n {\n name: 'tooltip',\n type: 'text',\n label: 'button tooltip',\n topicValueInterpolationEnabled: true\n },\n {\n name: 'disable',\n type: 'text',\n label: 'disable when parameter is empty/reset value or true' ,\n },\n {\n name: 'autoOpenOnParameter',\n type: 'text',\n label: 'automatically opens popup when the parameter changes.',\n },\n {\n name: 'closeAtParameterChange',\n type: 'text',\n label: 'close popup when the parameter changes. deprecated',\n },\n {\n name: 'openDialog',\n type: 'boolean',\n label: 'open dialog the first time',\n },\n {\n name: 'customStyling',\n type: 'boolean',\n label: 'Enable Custom Styling',\n },\n {\n name: 'buttonBorderRadius',\n type: 'text',\n label: 'Custom Styling: button-border-radius (examples: \"2lh\", \"50%\", \"1.2em\"). See https://developer.mozilla.org/en-US/docs/Web/CSS/border-radius',\n },\n {\n name: 'textColor',\n type: 'text',\n label: 'Custom Styling: text-color (examples: \"green\", \"#FF0000\", \"hsl(0 100% 50% / 50%)\"). See https://developer.mozilla.org/en-US/docs/Web/CSS/color_value',\n },\n {\n name: 'bgColor',\n type: 'text',\n label: 'Custom Styling: background-color (examples: \"green\", \"#FF0000\", \"hsl(0 100% 50% / 50%)\"). See https://developer.mozilla.org/en-US/docs/Web/CSS/color_value',\n },\n {\n name: 'hasButtonShadow',\n type: 'boolean',\n label: 'Custom Styling: enable button-shadow'\n },\n {\n name: 'buttonFontSize',\n type: 'text',\n label: 'Custom Styling: button-font-size'\n },\n {\n name: 'buttonFontFamily',\n type: 'text',\n label: 'Custom Styling: button-font-family',\n helpComponent: FontList\n },\n ],\n }\n }\n}\n","import './bbutil'\nimport BBIFrame from './BBIFrame'\nimport PublishUtils from '../../../helpers/PublishUtils'\n\nclass BBRDFViewer extends BBIFrame {\n getUrl = () => `/${window.bbFolderName}/static/iframes/rdfviewer/index.html`\n\n constructor() {\n super()\n\n this.scrolling = 'no'\n this.noEvents = false\n }\n\n static getDescription() {\n return {\n name: 'BBRDFViewer',\n component: BBRDFViewer,\n label: 'BB RDF Viewer',\n variables: [\n {\n name: 'query',\n defaultQuery:\"\\n\\rselect * where\\n\\r{\\n\\r\\n\\r graph ?g\\n\\r {\\n\\r \\n\\r ?uri a .\\n\\r ?uri ?geometry.\\n\\r \\n\\r #?uri ?ps.\\n\\r\\n\\r #?ps ?pss.\\n\\r #?pss \\\"\\\".\\n\\r #?pss ?color.\\n\\r ?uri a ?cls.\\n\\r bind (strafter(STR(?cls),\\\"#\\\") as ?color)\\n\\r bind (concat(\\\"IFC class:\\\",?color) as ?label)\\n\\r #bind (0.3 as ?alpha)\\n\\r }\\n\\r}\\n\\rlimit 1000\",\n type: 'yasgui',\n label: ' Use ?file. or upcoming blob parameters',\n },\n\n {\n name: 'publishVariable',\n type: 'text',\n label:\n 'Variabele in which an item URI is published, when an object is selected.',\n },\n {\n name: 'subscribeVariable',\n type: 'text',\n label:\n 'Published uri variabele on which to listen to define selection.',\n },\n PublishUtils.getResetValueDef(),\n ],\n }\n }\n\n state = { selectedUri: null }\n}\nexport default BBRDFViewer\n","import './bbutil'\nimport BBIFrame from './BBIFrame'\nimport PublishUtils from '../../../helpers/PublishUtils'\n\nclass BBCesium extends BBIFrame {\n getUrl = () => `/${window.bbFolderName}/static/iframes/cesiumMap/cesiumConf.html`\n\n constructor() {\n super()\n\n this.scrolling = 'no'\n this.noEvents = false\n }\n\n static getDescription() {\n return {\n name: 'BBCesiumJS',\n component: BBCesium,\n label: 'Cesium JS',\n variables: [\n {\n name: 'query',\n type: 'yasgui',\n label: ' Use ?uri ?geometry ?color',\n },\n {\n name: 'basequery',\n type: 'yasgui',\n label: ' Use ?uri ?geometry ?color',\n },\n\n {\n name: 'publishVariable',\n type: 'text',\n label:\n 'Variabele in which an item URI is published, when a feature in the map is clicked.',\n },\n {\n name: 'subscribeVariable',\n type: 'text',\n label:\n 'Published uri variabele on which to listen to define selection.',\n },\n PublishUtils.getResetValueDef(),\n ],\n }\n }\n\n state = { selectedUri: null }\n}\nexport default BBCesium\n","import BBIFrame from './BBIFrame'\nimport PublishUtils from '../../../helpers/PublishUtils'\n\nexport default class BBSVG extends BBIFrame {\n getUrl = () => `/${window.bbFolderName}/w2ui/SVG.html`\n\n constructor() {\n super()\n\n this.scrolling = 'false'\n this.noEvents = false\n }\n\n static getDescription() {\n return {\n name: 'BBSGV',\n component: BBSVG,\n label: 'SVG widget (Single Line Diagram)',\n variables: [\n {\n name: 'query',\n type: 'yasgui',\n label:\n 'to fill the svg. use ?uri ?x ?x ?type ',\n },\n {\n name: 'publishVariable',\n type: 'text',\n label:\n 'Variabele in which an item URI is published, when a feature in the map is clicked.',\n },\n {\n name: 'subscribeVariable',\n type: 'text',\n label:\n 'Published uri variabele on which to listen to define selection.',\n },\n \n \n\n {\n name: 'dragNodes',\n type: 'boolean',\n label: 'drag nodes',\n },\n \n PublishUtils.getResetValueDef(),\n {\n name: 'className',\n type: 'text',\n label: 'iframe classNames',\n },\n ],\n }\n }\n\n\n\n}\n","\r\nimport { lazy } from 'react';\r\n\r\nexport default class BBDWegselectorDescriptor {\r\n \r\n static getDescription() {\r\n return {\r\n name: 'Wegselector',\r\n component: lazy(() => import('./BBWegselector')),\r\n label: 'Wegselector',\r\n variables: [\r\n {\r\n name: 'title',\r\n type: 'text',\r\n label: 'Titel boven de form',\r\n },\r\n \r\n \r\n {\r\n name: 'showStrook',\r\n type: 'boolean',\r\n label: 'show strook options',\r\n },\r\n {\r\n name: 'publishVariable',\r\n type: 'text',\r\n label:\r\n 'Published filter sparql bps into a parameter',\r\n }\r\n ]\r\n }\r\n }\r\n\r\n \r\n}\r\n","import React, { Component } from 'react'\r\n\r\nexport default class BBParameterLinkEmptyWidget extends Component {\r\n\r\n static getDescription() {\r\n return {\r\n name: 'BBParameterLinkEmptyWidget',\r\n component: BBParameterLinkEmptyWidget,\r\n label: 'Parameter Link (EmptyWidget)',\r\n variables: [\r\n {\r\n name: 'query',\r\n type: 'yasgui',\r\n label:\r\n 'Query to link a parameter',\r\n },\r\n {\r\n name: 'publishParameter',\r\n type: 'text',\r\n label: 'publish parameter name (use ?uri single value limit 1)'\r\n }\r\n ]\r\n }\r\n\r\n}\r\nshouldComponentUpdate(props,state)\r\n{\r\n if (props==null) return false;\r\n if (props.data==null) return false;\r\n\r\n try{\r\n if (props.data!=this.props.data)\r\n {\r\n if (props.data!=null)\r\n {\r\n // console.log(props.data);\r\n if (props.data.results!=null)\r\n {\r\n try\r\n {\r\n if (props.data.results.bindings==null) return false;\r\n if (props.data.results.bindings.length!=1) return false;\r\n \r\n\r\n\r\n var newValue=props.data.results.bindings[0].uri.value;\r\n \r\n var par=props.publishParameter;\r\n if (par!=null)\r\n {\r\n \r\n this.props.publish(par,newValue);\r\n // console.log(\"perhaps publish new results? \",newValue,par);\r\n }\r\n }\r\n catch(ex)\r\n {\r\n // console.log(ex);\r\n }\r\n }\r\n }\r\n\r\n }\r\n }\r\n catch(e){\r\n // console.log(e)\r\n }\r\n return false;\r\n}\r\n\r\n\r\nrender()\r\n{\r\n return null; \r\n}\r\n\r\n}\r\n\r\n\r\n","import React from 'react'\nimport { Icon } from './Icon'\nimport styles from './SequencePaths.module.css'\n\nconst WIDGET_VARIABLES = [\n {\n name: 'query',\n type: 'yasgui',\n label:\n 'Query to display sequence path. ' +\n 'The following variable-names should be queried: \"?name\", \"?uri\", \"?parentUri\". ' +\n 'The utmost-grand-parent is displayed on the left, with the utmost-grand-child on the right.' +\n 'If there are multiple parents, then multiple sequence paths will be shown.'\n },\n {\n name: 'iconName',\n type: 'text',\n label: 'font-awesome-icon-name to be used between path-nodes (default: \"angle-right\")',\n },\n {\n name: 'topicOnClick',\n type: 'text',\n label: 'Topic to publish URI when clicking on path-node',\n },\n]\n\nexport class SequencePaths extends React.Component {\n state = {\n sequences: [],\n data: undefined,\n previousData: undefined,\n }\n\n static getDescription() {\n return {\n name: 'SequencePaths',\n component: SequencePaths,\n label: 'Sequence-paths widget',\n variables: WIDGET_VARIABLES,\n }\n }\n\n render = () => (\n
\n {this.state.sequences.map((sequence) => (\n
\n {sequence.map((entry, i) => (\n \n {i !== 0 && }\n this.select(entry.uri.value)}\n >\n {entry.name.value}\n \n \n ))}\n
\n ))}\n
\n )\n\n componentDidUpdate = () => {\n try {\n if (this.props.data && this.props.data !== this.state.previousData) {\n const sequences = sequenceRows(this.props.data.results.bindings)\n this.setState({ sequences, previousData: this.props.data })\n }\n } catch(e) {\n console.error(e.message)\n }\n }\n\n select = (uri) => this.props.dispatch({ type: 'PUBLISH', data: { [this.props.topicOnClick]: uri } })\n}\n\nfunction sequenceRows(rows) {\n const { rowByUri, rowsByParentUri } = makeHashMaps()\n const rootRows = rows.filter(r => !(r.parentUri?.value in rowByUri))\n return rootRows.flatMap(r => getSequences([[r]]))\n\n function makeHashMaps() {\n const rowByUri = {}\n const rowsByParentUri = {}\n\n for (const row of rows) {\n rowByUri[row.uri.value] = row\n\n if (!row.parentUri?.value) continue\n if (!rowsByParentUri[row.parentUri.value]) rowsByParentUri[row.parentUri.value] = [row]\n else rowsByParentUri[row.parentUri.value].push(row)\n }\n\n return { rowByUri, rowsByParentUri }\n }\n\n function getSequences(sequences) {\n return sequences.flatMap(sequence => {\n const parent = sequence.at(-1)\n const children = rowsByParentUri[parent.uri.value]\n if (!children) return [sequence]\n\n const newSequences = children.map(c => [...sequence, c])\n return getSequences(newSequences)\n })\n }\n}\n","import { lazy } from 'react';\r\n\r\nexport default class BBIFCJSViewerDescriptor{\r\n\r\n\r\nstatic getDescription() {\r\n return {\r\n name: 'IFCJSViewer',\r\n //component: lazy(() => import('./BBIFCJSViewer.js')),\r\n component: lazy(() => import('./BBIFCViewer.js')),\r\n label: 'IFC JS Viewer (v2)',\r\n variables: [\r\n {\r\n name: 'query',\r\n type: 'yasgui',\r\n label: 'use parameter ?filename ?guid ?hidden ?alpha ?color ',\r\n }]\r\n }\r\n}\r\n}","import { lazy } from 'react';\r\n\r\nexport default class BBIFCJSViewerDescriptor{\r\n\r\n\r\nstatic getDescription() {\r\n return {\r\n name: 'BBThreeJSViewer',\r\n component: lazy(() => import('./BBThreeJSViewer.js')),\r\n label: 'BB ThreeJS viewer (v2)',\r\n variables: [\r\n {\r\n name: 'glb files prefix',\r\n type: 'text',\r\n label: 'prefix for all glb files (e.g. http://wistor.nl/BloodBee/cgi/download/) ',\r\n },\r\n {\r\n name: 'glb files',\r\n type: 'array',\r\n label: 'comma separated file names to load. \"file1.glb,file2.glb\" or use parameters {{filename}}',\r\n },\r\n {\r\n name: 'visualisation hint',\r\n type: 'select',\r\n options: [\r\n \r\n { label: 'normal', value: 'normal' },\r\n { label: 'transparent', value: 'transparent' },\r\n { label: 'very transparent', value: 'vtransparent' },\r\n { label: 'toon', value: 'toon' },\r\n { label: 'toon transparent', value: 'toontransparent' },\r\n { label: 'nice', value: 'nice' },\r\n { label: 'nicer', value: 'nicer' },\r\n { label: 'nicer grey', value: 'nicerGrey' },\r\n { label: 'grey', value: 'grey' },\r\n { label: 'grey transparent', value: 'greytransparent' },\r\n { label: 'grey very transparent', value: 'greyverytransparent' },\r\n\r\n ],\r\n label: 'such as transparent,normal,toon ',\r\n\r\n },\r\n {\r\n name: 'simpleMode',\r\n type: 'boolean',\r\n label: 'use this for only basic viewing of IFC models',\r\n },\r\n\r\n {\r\n name: 'query',\r\n type: 'yasgui',\r\n label: 'use parameter ?guid ?uri ?hidden ?alpha ?color ?label (?gltf). use sparqlhints #transparent ',\r\n },\r\n \r\n {\r\n name: 'guidpublishparameter',\r\n type: 'text',\r\n label: 'parameter for guid publishing',\r\n },\r\n {\r\n name: 'guidselector',\r\n type: 'text',\r\n label: 'parameter for selecting object using GUID',\r\n }\r\n ,\r\n {\r\n name: 'selectOnlySparqlResults',\r\n type: 'boolean',\r\n label: 'select only sparql result objects',\r\n },\r\n \r\n {\r\n name: 'visualiseOnlySparqlResults',\r\n type: 'boolean',\r\n label: 'visualise only sparql result objects',\r\n }\r\n\r\n ]\r\n }\r\n}\r\n}","import { lazy } from 'react';\r\n\r\nexport default class BBSparnaturalDescriptor{\r\n\r\n\r\nstatic getDescription() {\r\n return {\r\n name: 'BBSparnatural',\r\n component: lazy(() => import('./BBSparnatural')),\r\n label: 'BB Sparnatural',\r\n variables: [\r\n \r\n \r\n {\r\n name: 'configttl',\r\n type: 'text',\r\n label: 'local filename such as \\\"config.ttl\\\". (refresh is necessary) ',\r\n },\r\n {\r\n name: 'lang',\r\n type: 'text',\r\n label: 'language, default is nl (refresh is necessary)',\r\n },\r\n {\r\n name: 'limit',\r\n type: 'text',\r\n label: 'limit (default is 100000) (refresh is necessary)',\r\n },\r\n\r\n {\r\n name: 'configttlAsString',\r\n type: 'text',\r\n label: 'config as a string. (not implemented) ',\r\n },\r\n\r\n\r\n {\r\n name: 'query',\r\n type: 'yasgui',\r\n label: 'perhaps create sparnatural config using sparql results? (not implemented) ',\r\n }\r\n ]\r\n}\r\n}\r\n}\r\n","import { lazy } from 'react';\r\nexport default class NebulaDescriptor {\r\n\r\nstatic getDescription() {\r\n return {\r\n name: 'Nebula',\r\n component: lazy(() => import('./Nebula')),\r\n label: 'Nebula',\r\n variables: [\r\n {\r\n name: 'query',\r\n type: 'yasgui',\r\n label:\r\n 'use parameter ?label for accordion headings. use ?content for inner accordion content ',\r\n },\r\n\r\n {\r\n name: 'title',\r\n type: 'text',\r\n label: 'Titel boven de tabel',\r\n },\r\n\r\n \r\n ],\r\n }\r\n }\r\n}\r\n","import { useEffect, useRef } from 'react'\n\nexport function useDebounce(onTimeout: () => void, debounceTime: number, debounceOn: unknown[] = []) {\n const timerRef = useRef>()\n useEffect(() => {\n if (timerRef.current) clearTimeout(timerRef.current)\n timerRef.current = setTimeout(() => onTimeout(), debounceTime)\n }, debounceOn) // eslint-disable-line react-hooks/exhaustive-deps\n}\n","import { ChangeEvent, ReactNode, useEffect, useState } from 'react'\nimport { FormGroup as _FormGroup, Input as _Input, Label as _Label } from 'reactstrap'\nimport { useDebounce } from '../../hooks/use-debounce'\nimport PublishUtils from '../../helpers/PublishUtils'\n\n// Workaround due to incorrect typing of the class-component instances\nconst FormGroup = _FormGroup as any\nconst Input = _Input as any\nconst Label = _Label as any\n\nconst DEFAULT = {\n DEBOUNCE_TIME: 1, //second\n WIDTH: '100%',\n}\n\nexport const textInputWidgetDescription = {\n name: 'Text input',\n component: TextInput,\n label: 'Text input',\n variables: [\n {\n name: 'label',\n type: 'text',\n label: 'Label above input-field',\n },\n {\n name: 'topicToPublish',\n type: 'text',\n label:\n 'Topic/Parameter to which to publish the user input',\n },\n {\n name: 'inputParameter',\n type: 'text',\n label:\n 'Initial value (refresh is necessary)',\n },\n {\n name: 'debounceTimeInSeconds',\n type: 'text',\n label: 'Seconds to wait after user input to broadcast value to topic',\n },\n {\n name: 'width',\n type: 'text',\n label: 'Width of text input (use css length value; default is \"100%\")',\n }\n ],\n}\n\nexport function TextInput(props: {\n label?: string\n topicToPublish?: string\n inputParameter?:string\n debounceTimeInSeconds: string\n width: string\n pubsub: Record\n publish: (topic: string, value: string) => void\n}) {\n\n\n\n const publishText = (text: string) => {\n if (props.topicToPublish) {\n //props.publish(props.topicToPublish, text)\n //console.log(PublishUtils.processStringForParameters({props:props},text));\n var resolvedText2=PublishUtils.processStringForParameters({props:props},text);\n setResolvedText(resolvedText2);\n setText(text);\n props.publish(props.topicToPublish,resolvedText2)\n }\n }\n\n \n \n // console.log(props.debounceTimeInSeconds, typeof props.debounceTimeInSeconds)\n const parsedDebounceTime = Number(props.debounceTimeInSeconds || DEFAULT.DEBOUNCE_TIME) * 1000\nvar initialValue=\"\";\nvar initialResolvedValue=\"\";\nvar publishFirstTime=false;\n if (props.inputParameter)\n {\n \n initialValue = props.inputParameter\n initialResolvedValue=PublishUtils.processStringForParameters({props:props},initialValue);\n publishFirstTime =true;\n \n }\n \n const [text, setText] = useState(initialValue);\n const [resolvedText, setResolvedText] = useState(initialResolvedValue)\n \n \n \n\n useDebounce(() => publishText(text), parsedDebounceTime, [text])\n useEffect(() => publishText(text), [props.topicToPublish]) // eslint-disable-line react-hooks/exhaustive-deps\n \n\n useEffect(() => {\n\n\n \n\n var rt=PublishUtils.processStringForParameters({props:props},text);\n if (rt!=resolvedText) {\n console.log(\"updating to \",rt);\n \n publishText(text)\n } else {\n // setShouldUpdate(false);\n }\n}, [props]);\n\n //if (publishFirstTime) publishText(initialValue);\nif (Number.isNaN(parsedDebounceTime))\n return
Error: configured waiting time is not a number: \"{props.debounceTimeInSeconds}\"
\n\n\n\n return (\n \n {props.label &&\n \n }\n ) => setText(e.target.value)}\n style={{width: props.width || DEFAULT.WIDTH}}\n />\n as ReactNode\n )\n}\n","import React, { lazy } from \"react\"\n\nexport const dynamicFilterWidgetDescription = {\n name: \"DynamicFilter\",\n component: lazy(() => import(\"./DynamicFilter\")),\n label: \"Dynamic Filter\",\n variables: [\n {\n name: 'urlPublishVariable',\n type: 'text',\n label: \"Variable in which the browser's URL is published upon filter change.\"\n },\n {\n name: 'filtersPublishVariable',\n type: 'text',\n label:\n 'Variable in which the filters are published. Note that the query will need \"PREFIX xsd\" in the header.'\n },\n {\n name: 'filterLogicalOperation',\n type: 'select',\n label: 'The behaviour when multiple filters are selected',\n options: [\n { value: 'AND', label: 'Filters connected without UNION (AND)' },\n { value: 'OR', label: 'Filters connected with UNION (OR)' },\n ]\n },\n {\n name: \"query\",\n type: \"yasgui\",\n label: \"SparQL query to define the possible filters: ?sparqlParameter ?property ?propertyURI ?value ?valueURI ?type ?defaultExpanded ?defaultVisible. Last two parameters are optional.\",\n helpComponent: FilterInputQueryHelp\n }\n ]\n}\n\nfunction FilterInputQueryHelp() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n ?sparqlParameter\n \n String literal with the name of the SparQL parameter used in the published snippet (?subj). Do not include the ?.\n
\n ?property\n \n String literal with the label of the filterable property.\n
\n ?propertyURI\n \n String literal with the URI of the filterable property.\n
\n ?value\n \n For checkboxes, radiobuttons, search: string literal with the label of the filterable values.
\n For range or daterange: \"min\" or \"max\" to indicate if it's the min or max value.\n
\n ?valueURI\n \n For checkboxes, radiobuttons, search: string URI or literal of the filterable values.
\n For range: number literal of the min or max value.
\n For daterange: date literal of the min or max value like \"2023-01-01T00:00:00Z\"^^xsd:dateTime.\n
\n ?type\n \n Either \"checkboxes\", \"radiobuttons\", \"search\", \"range\" or \"daterange\".\n
\n ?defaultExpanded\n \n Whether to expand the filter by default. Either true or false.\n
\n ?defaultVisible\n \n Whether the filter is shown by default. Either true or false. If false, it can be added by the user via the Add button.\n
\n )\n}\n\n","import { lazy } from 'react';\r\n\r\nexport const excelWidgetDescription = {\r\n name: 'Excel widget',\r\n component:lazy(() => import('./ExcelWidget' )),\r\n label: 'Excel widget',\r\n variables: [\r\n {\r\n name: 'excelUrl',\r\n type: 'text',\r\n label:\r\n 'An excel URL to load (If there is a excelUrlTopic specified, this will be ignored)',\r\n },\r\n {\r\n name: 'excelUrlTopic',\r\n type: 'text',\r\n label:\r\n 'Published topic on which to listen to the excel URL to load',\r\n },\r\n {\r\n name: 'selectedCellLocation',\r\n type: 'text',\r\n label:\r\n 'A variable to publish the selected cell location. The publish format is excel axis e.g \"A10\", \"B8\".',\r\n },\r\n {\r\n name: 'selectedCellValue',\r\n type: 'text',\r\n label:\r\n 'A variable to publish the selected cell value',\r\n },\r\n {\r\n name: 'currentActiveSheetName',\r\n type: 'text',\r\n label:\r\n 'A variable to publish the name of the current active sheet',\r\n },\r\n {\r\n name: 'highlightColor',\r\n type: 'text',\r\n label: 'The default color for hightlighting the cells in format of Hex Code (#RRGGBB). If no highlighting color is specified in the sparql data, this color will be used.',\r\n },\r\n {\r\n name: 'fastHighlighting',\r\n type: 'boolean',\r\n label: '[experimental] Enable this to highlight the cells is faster. But resetting the hightlights may requires reloading workbook or refresh the page. Note: Only the default color can be used for this highlight.',\r\n },\r\n {\r\n name: \"query\",\r\n type: 'yasgui',\r\n label:\r\n 'Query certain cells to be highlighted in the loaded workbook. The query pattern should be `select ?sheetIndex ?sheetName ?row ?col ?color ?value ?range` Note: Only cells that has values and their values are equal to ?value can be highlighted! If both sheetIndex and sheetName are specified, sheetIndex takes priority.',\r\n },\r\n ],\r\n }","import styles from './ToggleSwitch.module.css'\n\nexport const ToggleSwitch = (props: {\n isToggled: boolean\n onClick: () => void\n}) => {\n return (\n \n );\n };\n ","import { ToggleSwitch } from '../ToggleSwitch'\nimport { IconButton } from '@mui/material'\nimport { Icon } from './Icon'\nimport styles from './ToggleWidget.module.css'\nimport { IconProp } from '@fortawesome/fontawesome-svg-core'\n\nexport const toggleWidgetDescription = {\n name: 'ToggleWidget',\n component: ToggleWidget,\n label: 'Toggle Widget',\n variables: [\n {\n name: 'appearance',\n type: 'select',\n label: 'Choose your preferred appearance',\n options: [\n {\n label: 'Icon',\n value: 'icon',\n },\n {\n label: 'Checkbox',\n value: 'checkbox',\n },\n {\n label: 'Toggle Switch',\n value: 'toggleSwitch',\n },\n ],\n },\n {\n name: 'iconImage',\n type: 'text',\n label:\n 'name of the Font Awesome icon you want to use',\n },\n {\n name: 'publishTopic',\n type: 'text',\n label:\n 'topic to publish binary state to',\n },\n {\n name: 'enabledBgColor',\n type: 'text',\n label: 'Custom Styling: Enabled background-color (examples: \"green\", \"#FF0000\", \"hsl(0 100% 50% / 50%)\"). See https://developer.mozilla.org/en-US/docs/Web/CSS/color_value',\n },\n {\n name: 'enabledIconColor',\n type: 'text',\n label: 'Custom Styling: Enabled icon-color (examples: \"green\", \"#FF0000\", \"hsl(0 100% 50% / 50%)\"). See https://developer.mozilla.org/en-US/docs/Web/CSS/color_value',\n },\n {\n name: 'disabledBgColor',\n type: 'text',\n label: 'Custom Styling: Disabled background-color (examples: \"green\", \"#FF0000\", \"hsl(0 100% 50% / 50%)\"). See https://developer.mozilla.org/en-US/docs/Web/CSS/color_value',\n },\n {\n name: 'disabledIconColor',\n type: 'text',\n label: 'Custom Styling: Disabled icon-color (examples: \"green\", \"#FF0000\", \"hsl(0 100% 50% / 50%)\"). See https://developer.mozilla.org/en-US/docs/Web/CSS/color_value',\n },\n ],\n}\n\nfunction ToggleWidget(props: {\n pubsub: any\n appearance: 'icon' | 'checkbox' | 'toggleSwitch'\n iconImage: IconProp\n publishTopic: string\n enabledBgColor:string\n enabledIconColor: string\n disabledBgColor:string\n disabledIconColor: string\n publish: (topic: string, value: unknown) => void\n}) {\n const appearance = props.appearance || 'icon'\n const iconImage = props.iconImage || 'filter'\n const publishTopic = props.publishTopic || 'defaultTopic'\n const handleClick = () => {\n if (publishTopic) {\n props.publish(publishTopic, !props.pubsub[publishTopic])\n }\n }\n return (\n
\n {appearance == 'checkbox' && }\n {appearance == 'toggleSwitch' && }\n {appearance == 'icon' && (\n \n \n \n )}\n
\n )\n}\n","import { lazy } from 'react';\n\nexport const jobStatusWidgetDescription = {\n name: 'JobStatus',\n component: lazy(() => import('./JobStatus' )),\n label: 'Job status indicator (rule engine)',\n variables: [\n {\n name: 'initiatorTagsToInclude',\n type: 'text',\n label:\n 'Monitor only jobs initiated by specified rule tags. Can be comma separated. By default all jobs are monitored.'\n },\n {\n name: 'statusLabels',\n type: 'json',\n label:\n 'JSON that maps the job statuses to a human-friendly label'\n },\n {\n name: 'statusTextTemplateString',\n type: 'text',\n label:\n 'Template string for the job status display. May have HTML. You can use placeholders {{.count}} and {{.status}} (NOTE: these are not available as pubsub variables)'\n },\n {\n name: 'zeroJobsString',\n type: 'text',\n label:\n 'Text for the job status display when there are zero active jobs. May have HTML.'\n },\n {\n name: 'refetchInterval',\n type: 'text',\n label: 'How often to refresh in seconds. Cannot be lower than 1.'\n }\n ],\n }\n","import React from 'react'\nimport PublishUtils from '../../../helpers/PublishUtils'\n\nexport const configOptions = [\n {\n name: 'query',\n type: 'yasgui',\n label: 'Query where all possible internal sources for the video queried as `?src_URL`s. External urls are not supported, the urls need to start with \"/servlets/cgi/download/\"',\n },\n {\n name: 'timeJumpTopic',\n type: 'text',\n label: 'Topic (variable) for which integer updates will make the video seek to that point in time as seconds',\n },\n PublishUtils.getTimestampParametersDef(),\n]\n\nexport const videoPlayerDescription = {\n name: 'VideoPlayer',\n component: React.lazy(() => import('./Widget')),\n label: 'VideoPlayer',\n variables: configOptions,\n}\n","\r\nimport { lazy } from 'react';\r\n\r\n\r\nexport default class BBLibremapDescriptor {\r\n\r\n\r\n\r\nstatic getDescription() {\r\n return {\r\n name: 'BB Maplibre',\r\n component: lazy(() => import('./BBLibremap')),\r\n label: 'BBLibremap',\r\n variables: [\r\n {\r\n name: 'query',\r\n type: 'yasgui',\r\n label:\r\n 'Query to fill tree. First item should be the object label, the second the object URI, the third the parent URI. optional you can use icon, icon2 and icon3 variables for fa-fa icons ()',\r\n },\r\n \r\n ],\r\n }\r\n }\r\n\r\n}","\nimport { lazy } from 'react';\nimport PublishUtils from '../../../helpers/PublishUtils';\n\nclass BBPMermaidDescriptor {\n \n\n static getDescription() {\n return {\n name: 'BBMermaid',\n component: lazy(() => import('./BBMermaid')),\n label: 'BBPMermaid',\n variables: [\n \n {\n name: 'mermaid',\n type: 'json-text',\n label:\n 'mermaid string',\n }\n \n ],\n }\n }\n\n \n}\n\nexport default BBPMermaidDescriptor\n","export default class WidgetCategory\r\n {\r\n static basic=\"basic\";\r\n static experimental=\"experimental\";\r\n static widget2D=\"2D\";\r\n static widget3D=\"3D\";\r\n static graphic=\"graphic\";\r\n static edit=\"edit\";\r\n static other=\"other\";\r\n static layout=\"layout\";\r\n \r\n}","import { lazy } from 'react';\nimport WidgetCategory from '../WidgetCategory';\nimport PublishUtils from './../../helpers/PublishUtils'\n\n\n\nexport default class ListDescriptor {\n\n static getDescription() {\n return {\n name: 'List',\n component: lazy(() => import('./List')), \n label: WidgetCategory.basic+' List widget',\n category:WidgetCategory.basic,\n variables: [\n {\n name: 'title',\n type: 'text',\n label: 'Titel boven de lijst',\n },\n {\n name: 'query',\n type: 'yasgui',\n label: 'first variabele for the labels ',\n defaultQuery:\"PREFIX rdfs: \\n\\rselect ?label ?uri where\\n\\r{\\n\\r graph<{{graph}}>\\n\\r {\\n\\r\t\t?uri rdfs:label ?label\\n\\r }\\n\\r}\\n\\r \\n\\rlimit 10\"\n },\n {\n name: 'publishVariable',\n type: 'text',\n label: 'sparql parameter name for publishing select event result',\n },\n {\n name: 'subscribeVariable',\n type: 'text',\n label: 'Published variabele on which to listen to to define list item selection.',\n },\n {\n name: 'multipleselect',\n type: 'boolean',\n label: 'allow multiple selections. parameters are filled as comma separated values',\n },\n {\n name: 'allMultipleSelect',\n type: 'boolean',\n label: 'Add \"All\" multiple select',\n },\n {\n name: 'defaultSelectAll',\n type: 'boolean',\n label: 'Selects all as default behaviour and after each query update',\n },\n PublishUtils.getMultipleValueFormatOptions(),\n PublishUtils.getResetValueDef(),\n {\n name: 'customStyling',\n type: 'boolean',\n label: 'Enable Custom Styling',\n },\n {\n name: 'areaBorderStyle',\n type: 'text',\n label: 'Custom Styling: area-border-style (example: \"3px solid grey\"). See https://developer.mozilla.org/en-US/docs/Web/CSS/border',\n },\n {\n name: 'areaBorderRadius',\n type: 'text',\n label: 'Custom Styling: area-border-radius (examples: \"0.8em\", \"1.2em\"). See https://developer.mozilla.org/en-US/docs/Web/CSS/border-radius',\n },\n {\n name: 'textColor',\n type: 'text',\n label: 'Custom Styling: text-color (examples: \"green\", \"#FF0000\", \"hsl(0 100% 50% / 50%)\"). See https://developer.mozilla.org/en-US/docs/Web/CSS/color_value',\n },\n {\n name: 'bgColor',\n type: 'text',\n label: 'Custom Styling: background-color (examples: \"green\", \"#FF0000\", \"hsl(0 100% 50% / 50%)\"). See https://developer.mozilla.org/en-US/docs/Web/CSS/color_value',\n },\n {\n name: 'selectedTextColor',\n type: 'text',\n label: 'Custom Styling: text-color of selection (examples: \"green\", \"#FF0000\", \"hsl(0 100% 50% / 50%)\"). See https://developer.mozilla.org/en-US/docs/Web/CSS/color_value',\n },\n {\n name: 'selectedBgColor',\n type: 'text',\n label: 'Custom Styling: background-color of selection (examples: \"green\", \"#FF0000\", \"hsl(0 100% 50% / 50%)\"). See https://developer.mozilla.org/en-US/docs/Web/CSS/color_value',\n },\n {\n name: 'itemBorderStyle',\n type: 'text',\n label: 'Custom Styling: border between each list-item (examples: \"3px solid grey\")'\n },\n {\n name: 'itemPaddingVertical',\n type: 'text',\n label: 'Custom Styling: vertical padding of each list-item (examples: \"0.8em\", \"1.4em\"). See https://developer.mozilla.org/en-US/docs/Web/CSS/padding-top',\n },\n {\n name: 'itemPaddingHorizontal',\n type: 'text',\n label: 'Custom Styling: horizontal padding of each list-item (examples: \"0.4em\", \"1.0em\"). See https://developer.mozilla.org/en-US/docs/Web/CSS/padding-left',\n },\n /*,\n {\n name: 'clearParameter',\n type: 'text',\n label: 'clears widget when parameter changes'\n }*/\n ],\n }\n }\n}\n\n ","import React, { Component, Fragment } from 'react'\nimport styles from './RadioBox.module.css'\n\nclass RadioBox extends Component {\n static getDescription() {\n return {\n name: 'RadioBox',\n component: RadioBox,\n label: 'Radio box widget',\n variables: [\n {\n name: 'publishVariable',\n type: 'text',\n label:\n 'Variabele in which the URI of the selected radio box is published.',\n },\n {\n name: 'publishVariableLabel',\n type: 'text',\n label:\n 'Variabele in which the LABEL of the selected radio box is published.',\n },\n {\n name: 'label',\n type: 'text',\n label: 'Label',\n topicValueInterpolationEnabled: true\n },\n {\n name: 'horizontal',\n type: 'boolean',\n label: 'horizontal',\n },\n {\n name: 'options',\n type: 'text',\n label:\n 'Options defined by a comma separated list of value/label pairs',\n },\n ],\n }\n }\n\n componentDidMount() {\n let options = this.restructureOptions()\n if (!options) return;\n if (false) \n {\n this.props.publish(\n this.props.publishVariable,\n options[0] && options[0].value\n )\n }\n }\n\n onChange = (event) => {\n try\n {\n let value = event.target.value\n this.props.publish(this.props.publishVariable, value)\n }\n catch(e){console.log(e);}\n try\n {\n if (this.props.publishVariableLabel!=null)\n {\n console.log(event.target.alt);\n this.props.publish(this.props.publishVariableLabel, event.target.alt);\n }\n }\n catch(e){console.log(e);}\n\n\n\n }\n\n restructureOptions() {\n let options = this.props.options\n try {\n options = options.split(',')\n } catch (error) {\n return null\n }\n\n options = options.reduce((org, value, index) => {\n if (index % 2 === 0) {\n value = value.trim()\n org = [\n ...org,\n {\n value,\n label: options[index + 1] || value,\n },\n ]\n }\n return org\n }, [])\n return options\n }\n\n renderOptionsHorizontal() {\n let value = this.props.pubsub[this.props.publishVariable]\n let options = this.restructureOptions()\n\n if (!options) {\n return (\n
Options should be a comma separated list of value,label pairs
\n )\n }\n\n return (\n \n {options.map((option) => (\n
\n \n
\n ))}\n
\n )\n }\n renderOptionsVertical() {\n let value = this.props.pubsub[this.props.publishVariable]\n let options = this.restructureOptions()\n\n if (!options) {\n return (\n
Options should be a comma separated list of value,label pairs
\n )\n }\n\n return (\n
\n {options.map((option) => (\n
\n \n
\n ))}\n
\n )\n }\n\n render() {\n let horizontal = this.props.horizontal\n return (\n
\n
{this.props.label}
\n\n {horizontal\n ? this.renderOptionsHorizontal()\n : this.renderOptionsVertical()}\n
\n )\n }\n}\n\nexport default RadioBox\n","import PublishUtils from \"../../../helpers/PublishUtils\"\nimport { ConfigurablePropsFromDescription } from \"../../../helpers/widget\"\nimport { v4 as uuidv4 } from \"uuid\"\nimport { TableppAction, TableppColumnConfig } from \"./config-schema\"\n\nconst defaultQuery = `SELECT\n ?title\n (?note as ?title_URI)\n (\"\" as ?comments)\n (\"fa-comments\" as ?comments_ICON)\n (?note as ?comments_URI)\n ?author\n ?author_ICON\n (\"16px\" as ?author_ICONSIZE)\n ?author_ICONCOLOR\n ?sourceLink\n ?sourceLink_ICON\n ?sourceLink_URL\nWHERE {\n BIND(IF(BOUND(?sourceLink_URL), \"radix-external-link\", \"\") AS ?sourceLink_ICON)\n VALUES (?note ?title ?author ?author_ICON ?author_ICONCOLOR ?sourceLink ?sourceLink_URL) {\n ( \"My first babby note\" \"Baby\" \"fa-baby\" \"magenta\" undef undef)\n ( \"Server is down\" \"BimBamBoom\" \"fa-user-group\" \"#060270\" \"app.wistor.nl\" \"https://app.wistor.nl\")\n ( \"Tips on keeping data secure\" \"Hackermann 😎\" \"fa-user\" \"#388B17\" \"google.com\" \"https://google.com\")\n }\n}\n`\n\ntype ColumnButton = {\n icon?: string\n label?: string\n actions?: Array\n buttons?: ColumnButton[]\n}\n\nexport type ColumnDescription = {\n id: string\n label: string\n filterable?: boolean\n sortable?: boolean\n hidden?: boolean\n publishTopic?: string\n buttons?: ColumnButton[]\n width?: string\n}\n\nexport const configOptions = [\n {\n name: 'query',\n type: 'yasgui',\n description:\"extra documentation\",\n defaultQuery,\n label: [\n 'Query-variable-names structured as \"?{identifier}_{modifier}\" modify',\n 'the display query-variable-results of \"?{identifier}\",',\n 'see help for more info',\n ].join(' '),\n helpComponent: QueryHelp\n },\n {\n name: 'custom',\n type: 'tablepp-custom',\n label: 'Column Config\\nℹ️Note: The displayed order of columns is determined by the order of the tabs, not the order of the result variables in the SPARQL query. You can drag-and-drop tabs to change their order.',\n helpComponent: ConfigJsonHelp\n },\n {\n name: 'publishVariable',\n type: 'text',\n label: 'Topic (variable) in which item URI is published when a link in the table is clicked. Can be overridden by the column-configuration\\'s \"publishTopic\".',\n description: \"more information about the publish variable\"\n },\n {\n name: 'hideColumnHeaders',\n type: 'boolean',\n label: 'hide column headers',\n },\n {\n name: 'showFilters',\n type: 'boolean',\n label: 'enable global filter',\n },\n {\n name: 'idToFilterTextOf',\n type: 'text',\n label: 'Limit global filtering to specific identifier(s), separate with comma. Leave empty to filter all fields.',\n },\n {\n name: 'paginationEnabled',\n type: 'boolean',\n label: 'enable pagination',\n },\n {\n name: 'paginationPageSize',\n type: 'number',\n label: 'maximum number of rows to show per page',\n },\n {\n name: 'selectionMode',\n type: 'select',\n options: [\n { value: \"DISABLED\", label: \"Disabled\"},\n { value: \"SINGLE\", label: \"Single row (highlight)\"},\n { value: \"MULTIPLE\", label: \"Multiple rows (checkboxes)\"},\n ],\n label: 'row selection mode',\n },\n {\n name: 'variableToPublishOnSelection',\n type: 'text',\n label: 'Variable name from the SPARQL query representing the value for selection. Will be used for the selection publish and subscription settings below.'\n },\n {\n name: 'selectedRowSubscription',\n type: 'text',\n label: 'Variabele to listen to for row selection.',\n },\n {\n name: 'lastSelectedRowTopic',\n type: 'text',\n label: 'Topic to publish last selected row to.'\n },\n {\n name: 'selectedRowsTopic',\n type: 'text',\n label: 'Topic to publish selected rows to.'\n },\n {\n name: 'topicToListenToForSelectedRows',\n type: 'text',\n label: 'Topic to listen for selected rows, this is based on your multiple value configuration. The default format is with diamond brackets and with a comma separator, so for example: ,'\n },\n\n PublishUtils.getMultipleValueFormatOptions(),\n {\n name: 'enableButtonExportSelectionToCsv',\n type: 'boolean',\n label: 'enable button to export selection to CSV'\n },\n {\n name: 'labelButtonExportSelectionToCSV',\n type: 'text',\n label: 'label for button to export selection to CSV'\n },\n {\n name: 'delimiterExportSelectionToCSV',\n type: 'select',\n label: 'delimiter used when exporting selection to CSV',\n options: [\n {label: 'comma', value: ','},\n {label: 'semicolon', value: ';'},\n {label: 'tab', value: '\\t'}\n ]\n },\n {\n name: 'filenameExportSelectionToCSV',\n type: 'text',\n label: 'filename of csv-file when exporting selection to CSV',\n topicValueInterpolationEnabled: true\n }\n] as const\n\nfunction QueryHelp() {\n return (\n
\n

\n The results of this query are displayed in the table in the same order\n as they are returned from the triplestore.\n

\n

\n It is possible to modify a cell by selecting sparql-variables with the\n following name-shape {'?{identifier}_{modifier}'}.\n Rows have an empty identifier, e.g. {'?_{modifier}'}.\n

\n

\n The following {'modifier'}s have been implemented:\n

\n
    \n
  • \n URI: makes the cell clickable. On click it publishes this value to the global \"publish topic\",\n or the column-configuration-specific `publishTopic` (the latter overrides the former).{\" \"}\n If this modifier is used, then URL should not be used as you cannot have both behaviours.{\" \"}\n An error-notification is clearly visible on your screen if both modifiers are active.\n
  • \n
  • \n URL: makes the cell clickable. On click it opens a new browser-tab/window with this value as its URL.{\" \"}\n If this modifier is used, then URL should not be used as you cannot have both behaviours.{\" \"}\n An error-notification is clearly visible on your screen if both modifiers are active.\n
  • \n
  • \n ICON: name of the icon, this can be an icon from{\" \"}\n fontawesome, {\" \"}\n Radix Icons, or{\" \"}\n MUI Icons\n
    \n Examples: fa-user, fa-minus-circle, radix-layers, radix-dots-horizontal, mui-add.\n
  • \n
  • \n ICONCOLOR: css color of the icon. Examples: blue, rgba(128, 128, 0, 0.5), #ffee33\n
  • \n
  • \n ICONSIZE: css size of the icon. Examples: 15px, 16pt, 2rem\n
  • \n
  • \n TEXTCOLOR: css color of the text. Examples: blue, rgba(128, 128, 0, 0.5), #ffee33\n
  • \n
\n
\n )\n}\n\nexport type TablePlusPlusConfigOptions = ConfigurablePropsFromDescription\n\nfunction ConfigJsonHelp() {\n const example: TableppColumnConfig = {\n \"id\": uuidv4(),\n \"label\": \"Actions\",\n \"width\": \"150px\",\n \"buttons\": [\n {\n \"icon\": \"fa-star\",\n \"actions\": [\n {\n \"type\": \"start-rule\",\n \"startRule\": \"favourite rule\",\n \"parameters\": {\n \"someParameter\": \"{{someValue}}\"\n },\n \"timestampVariable\": \"myTimestamp\"\n }\n ]\n },\n {\n \"buttons\": [\n {\n \"label\": \"Open user details\",\n \"icon\": \"fa-user\",\n \"actions\": [\n {\n \"type\": \"publish\",\n \"topic\": \"userForPopup\",\n \"value\": \"{{user}}\"\n }\n ]\n }\n ]\n }\n ]\n }\n\n return (\n
\n

SPARQL columns

\n

\n The visible columns and the order of columns are explicitly decided by the SPARQL column tabs.\n Use the 'Auto fill' button to automatically populate them based on variables in\n your SELECT statement.\n

\n

\n If you see a column with the '🔗' symbol, it means it is linked to a valid SPARQL variable.
\n Columns with the '⛓️‍💥' symbol are not linked to a valid SPARQL variable.\n

\n

Action columns

\n

\n You can also create additional columns which are not linked to a specific SPARQL variable,\n but can be used to trigger an action.\n\n

    \n
  • Currently two action types are supported in buttons: \"publish\" and \"start-rule\"
  • \n
  • You can use query result variables in {'{{placeholders}}'}, from any row's SPARQL column variable or global pubsub variables
  • \n
  • Create a button without an icon and with button-children to display a \"...\"-dropdown menu
  • \n
\n

\n

\n An advanced example for an action column:
\n

{JSON.stringify(example, null, 4)}
\n

\n
\n )\n}","import * as React from 'react'\nimport {configOptions} from './config-options'\n\n\nexport const TablePlusPlusDescription = {\n name: 'Table++',\n component: React.lazy(() => import('./TablePlusPlus' )),\n label: 'Table++',\n variables: configOptions,\n}\n","import { lazy } from 'react';\nimport WidgetCategory from '../../WidgetCategory';\nimport PublishUtils from '../../../helpers/PublishUtils';\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from '../../ui-primitives/tabs'\nimport { JsonTextEditor } from '../../JsonEditor'\n\nexport default class IFCJSViewerV3Descriptor {\n\n static getDescription() {\n return {\n name: 'IFCJSViewerV3',\n component: lazy(() => import('./IFCJSViewerV3')), \n label: WidgetCategory.experimental+' IFC Viewer V3 (BIM-Legal development) ',\n category:WidgetCategory.experimental,\n variables: [\n\n {\n name: 'modus',\n type: 'select',\n label: 'modus',\n options: [\n {\n label: 'Viewer',\n value: 'Viewer',\n },\n {\n label: 'Upload only',\n value: 'Upload',\n },\n {\n label: 'Viewer with Upload',\n value: 'ViewerWithUpload',\n },\n {\n label: 'Download BIM-Legal file',\n value: 'BIMLegalDownload',\n },\n ],\n },\n {\n name: 'uploadFileMode',\n type: 'select',\n label: 'upload File Mode',\n options: [\n {\n label: 'single Ifc',\n value: 'singleIfc',\n },\n {\n label: 'multiple Ifc (not yet implemented)',\n value: 'multipleIfc',\n },\n ],\n },\n {\n name: 'uploadButtonLabel',\n type: 'text',\n label: 'Text for the upload button',\n },\n {\n name: 'uploadPanelLabel',\n type: 'text',\n label: 'Text for the upload panel',\n },\n {\n name: 'uploadAppearance',\n type: 'select',\n label: 'Upload appearance',\n options: [\n {\n label: 'Tall (default)',\n value: 'tall',\n },\n {\n label: 'Compact',\n value: 'compact',\n }\n ],\n },\n {\n name: 'uploadBelongsTo',\n type: 'text',\n label: 'uri for belongsTo parameter',\n helpComponent: function (){return (

the uploadany file uri of the uploaded ifc file and its derivations (like frag and LD) will be connected via the wistor#belongsTo Parameter to this parameter value

)} \n },\n {\n name: 'uploadconversionjson',\n type: 'json',\n label: 'conversion to LD and viewer options in JSON',\n helpComponent: UploadConversionJsonHelp\n },\n {\n name: 'bimlegalfrag',\n type: 'boolean',\n label: 'create a IFCSpace frag file only'\n },\n {\n name: 'AfterUploadIFCUriSelection',\n type: 'text',\n label: 'parameter that will be filled with the IFCupload uri',\n helpComponent: function () {return (

After a succesful upload the uploadany file uri will be set to this parameter. This can be handy to automaticially select the uploaded file

)}\n },\n PublishUtils.getTimestampParametersDef(),\n PublishUtils.getRunRuleParametersDef(),\n {\n name: 'files prefix',\n type: 'text',\n label: 'prefix for all ifc files (e.g. http://wistor.nl/servlets/cgi/download/repo/) ',\n },\n {\n name: 'ifcfiles',\n type: 'array',\n label: 'comma separated url(s) to IFC files to display. parameters can be used here referring to (wistor) download locations using the wistor download servlet',\n },\n {\n name: 'Visualisation mode',\n type: 'select',\n label: '2d of 3d modus',\n options: [\n {\n label: '3D',\n value: '3D',\n },\n {\n label: '2D',\n value: '2D',\n }\n ]},\n {\n name: 'objectVisualisationMode',\n type: 'select',\n label: 'options to visualise IFC data icw Sparql results',\n options: [\n {\n label: 'normal (no sparql necessary)',\n value: 'normal',\n },\n {\n label: 'show only sparql results ',\n value: 'sparqlonly',\n },\n {\n label: 'show all transparent (sparql results in color) ',\n value: 'transparent',\n }\n ]},\n {\n name: 'query',\n type: 'yasgui',\n label: 'use parameter ?guid (necessary to link?) ?uri (handy for publishing) ?hidden (false/true) ?alpha ?color (create a color based upon this value) ?colorHex ?label (popup label) ',\n defaultQuery:\"\"\n },\n {\n name: 'predefinedColors',\n type: 'json',\n label: 'JSON-object linking ?color labels to actual CSS-style colors. Example: { \"Walls\": \"#3366ff\", \"Floors\": \"red\" }',\n },\n {\n name: 'publishVariable',\n type: 'text',\n label: 'sparql parameter name for publishing select event result. Arguably we need GUIDS to link data to the viewer. Perhaps GUID based interaction (publish guids instead of URIs is handier)',\n },\n {\n name: 'subscribeVariable',\n type: 'text',\n label: 'Published variabele on which to listen for selection.',\n },\n {\n name: 'zoomOnSelectionChange',\n type: 'boolean',\n label: 'Automatically zoom in to selection when selection variable has changed.',\n },\n {\n name: 'zoomToSelection',\n type: 'boolean',\n label: 'Automatically zoom in to selection when changing selection interactively.',\n },\n {\n name: 'resetSelectionOnSparqlUpdate',\n type: 'boolean',\n label: 'Reset selection on SPARQL update.',\n },\n {\n name: 'multipleselect',\n type: 'boolean',\n label: 'allow multiple selections. parameters are filled as comma separated values',\n },\n \n PublishUtils.getMultipleValueFormatOptions(),\n {\n name: 'bimlegaleditorversion',\n type: 'boolean',\n label: 'allow other scripts to interact with special functions for bim-legal',\n },\n \n /*,\n {\n name: 'clearParameter',\n type: 'text',\n label: 'clears widget when parameter changes'\n }*/\n ],\n }\n }\n}\n\nconst UPLOADCONVERSIONJSON_DEFAULT = {\n \"categoriesToInclude\": [\n \"IFCELEMENT\", \"IFCSITE\", \"IFCPROJECT\", \"IFCBUILDING\", \"IFCBUILDINGSTOREY\", \"IFCGROUP\", \"IFCZONE\"\n ],\n \"relationsToInclude\": [\n \"IsDefinedBy\",\n \"ContainedInStructure\",\n \"ContainsElements\",\n \"Decomposes\",\n \"IsDecomposedBy\",\n \"IsGroupedBy\",\n \"HasAssignments\",\n ],\n \"includeElementsWithoutRelations\": true,\n \"psetNameRegex\": null\n}\n\nconst UPLOADCONVERSIONJSON_EVERYTHING = {\n \"categoriesToInclude\": [\n \"IFCELEMENT\", \"IFCSITE\", \"IFCPROJECT\", \"IFCBUILDING\", \"IFCBUILDINGSTOREY\", \"IFCGROUP\"\n ],\n \"relationsToInclude\": [\n \"IsDecomposedBy\",\n \"Decomposes\",\n \"AssociatedTo\",\n \"HasAssociations\",\n \"ClassificationForObjects\",\n \"IsGroupedBy\",\n \"HasAssignments\",\n \"IsDefinedBy\",\n \"DefinesOcurrence\",\n \"IsTypedBy\",\n \"Types\",\n \"Defines\",\n \"ContainedInStructure\",\n \"ContainsElements\",\n \"HasControlElements\",\n \"AssignedToFlowElement\",\n \"ConnectedTo\",\n \"ConnectedFrom\",\n \"ReferencedBy\",\n \"Declares\",\n \"HasContext\",\n \"Controls\",\n \"IsNestedBy\",\n \"Nests\"\n ],\n \"includeElementsWithoutRelations\": true,\n \"psetNameRegex\": null\n}\n\nconst UPLOADCONVERSIONJSON_PSETS = {\n \"categoriesToInclude\": [\n \"IFCELEMENT\"\n ],\n \"relationsToInclude\": [\n \"IsDefinedBy\",\n ],\n \"includeElementsWithoutRelations\": false,\n \"psetNameRegex\": null\n}\n\nconst UPLOADCONVERSIONJSON_BIMLEGAL = {\n \"categoriesToInclude\": [\n \"IFCSPACE\", \"IFCSITE\", \"IFCPROJECT\", \"IFCBUILDING\", \"IFCBUILDINGSTOREY\"\n ],\n \"relationsToInclude\": [\n \"IsDefinedBy\",\n \"ContainsElements\",\n \"ContainedInStructure\"\n ],\n \"includeElementsWithoutRelations\": true,\n \"psetNameRegex\": null\n}\n\nfunction UploadConversionJsonHelp() {\n return (\n
\n

Configuration properties

\n
    \n
  • \n categoriesToInclude: list of IFC object categories to include in export, like .\n IFCELEMENT is a shortcut for all categories that have{' '}\n \n IfcElement\n {' '}\n as superclass. Should be in UPPERCASE. If this is not set or null, all non-orphaned elements are included.\n
  • \n
  • \n categoriesToView: list of IFC object categories to show in the viewer, like .\n IFCELEMENT is a shortcut for all categories that have{' '}\n \n IfcElement\n {' '}\n as superclass. Should be in UPPERCASE. If this is not set or null, nothing will be shown.\n
  • \n
  • \n relationsToInclude: defines relations to include (according the relation name in IFC). Is case\n sensitive. Use IsDefinedBy for property set relations. If this is not set or null, all supported relations are\n included.\n
  • \n
  • \n includeElementsWithoutRelations: boolean whether to include elements where zero relations where\n found according to the relationsToInclude & psetNameRegex settings.\n
  • \n
  • \n psetNameRegex: regex to only export property sets relations with a specific name. If this is not\n set, null, or empty, all property sets are included.\n
  • \n
\n\n

Example configurations

\n \n \n Default\n Everything\n IfcElements with psets\n BIMLegal\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n )\n}","import './bbutil'\nimport BBIFrame from './BBIFrame'\n\nclass BBIfcViewerNextGen extends BBIFrame {\n getUrl = () => `/${window.bbFolderName}/static/iframes/ifc-viewer/index.html`\n\n constructor() {\n super()\n\n this.scrolling = 'yes'\n this.noEvents = false\n this.usesParameters=false;\n }\n\n static getDescription() {\n return {\n name: 'BBIfcViewerNextGen',\n component: BBIfcViewerNextGen,\n label: 'BB IFC Viewer next gen',\n variables: [\n\n ],\n }\n }\n}\n\nexport default BBIfcViewerNextGen\n","\nimport { lazy } from 'react';\n\nexport default class BBTableDescriptor{\n\n static getDescription() {\n return {\n name: 'BBTable',\n component: lazy(() => import('./BBTable')),\n label: 'BB Table widget',\n variables: [\n {\n name: 'query',\n type: 'yasgui',\n label:\n 'to fill the table use any parameter. Optionally use Check parameter extension for boolean values. Optionally use the Fix extension (?parameternameFix) to restrict the amount of numbers after the decimal for each parameter. Optionally use ?background for background coloring ',\n },\n {\n name: 'renderEmpty',\n type: 'boolean',\n label: 'render an empty table',\n },\n {\n name: 'colSizes',\n type: 'array',\n label: 'optional array of col sizes. 100px,50%,350px. Needs a widgetrefresh when changed',\n },\n\n {\n name: 'publishVariable',\n type: 'text',\n label: 'Published uri variabele for other widgets.',\n },\n\n {\n name: 'replaceHeaderJSON',\n type: 'text',\n label: 'Key value JSON that replaces parameter headers. {\"label\":\"naam (volledig)\"}',\n },\n {\n name: 'searchbar',\n type: 'boolean',\n label: 'show searchbar (widget refresh necessary)',\n },\n {\n name: 'className',\n type: 'text',\n label: 'iframe classNames',\n },\n {\n name: 'uselocalnumberformat',\n type: 'boolean',\n label: 'use local number format',\n },\n {\n name: 'downloadbutton',\n type: 'boolean',\n label: 'add toolbar with download button (widget refresh necessary)',\n },\n {\n name: 'downloadURL',\n type: 'text',\n label: 'base exceltemplate. This will be used to insert the data in the first sheet',\n },\n {\n name: 'downloadStartRow',\n type: 'text',\n label: 'start row to insert the data into the excelsheet',\n },\n {\n name: 'downloadNoHeader',\n type: 'boolean',\n label: 'do not export sparql parameter names as columnames',\n },\n {\n name: 'wraptext',\n type: 'boolean',\n label: 'wrap text in the table',\n },\n {\n name: 'excelheadertext',\n type: 'text',\n label: 'headertext for row 1 when downloading this table in excel',\n },\n\n {\n name: 'summaryFields',\n type: 'text',\n label: 'add summary below using the following csv sparql parameters (costs, profit)',\n },\n {\n name: 'filename',\n type: 'text',\n label: 'xlsx filename',\n },\n {\n name: 'selectType',\n type: 'select',\n label: 'Selection type (refresh is necessary)',\n options: [\n {\n label: 'Rows',\n value: 'row'\n },\n {\n label: 'Cells',\n value: 'cell'\n },\n ],\n },\n ],\n }\n }\n}\n\n","\r\nimport { lazy } from 'react';\r\n\r\n\r\nexport default class BBSVGEditorDescriptor {\r\n\r\n\r\n\r\nstatic getDescription() {\r\n return {\r\n name: 'BB SVGEditor',\r\n component: lazy(() => import('./BBSVGEditor')),\r\n label: 'BB SVGEditor',\r\n variables: [\r\n {\r\n name: 'query',\r\n type: 'yasgui',\r\n label:\r\n 'Query to fill the svg. use ?uri and ?svg',\r\n },\r\n \r\n ],\r\n }\r\n }\r\n\r\n}","\r\nimport { lazy } from 'react';\r\n\r\n\r\nexport default class BBIFCJSViewerDescriptor{\r\n\r\n\r\nstatic getDescription() {\r\n return {\r\n name: 'BB Ganttchart',\r\n \r\n component: lazy(() => import('./BBGanttChart.js')),\r\n label: 'BB Ganttchart (under development)',\r\n variables: [\r\n {\r\n name: 'query',\r\n type: 'yasgui',\r\n label: 'use parameter ?id ?uri ?name ?start ?end ?progress ?dependencies ?graph ?code'\r\n },\r\n \r\n {\r\n name: 'editable',\r\n type: 'boolean',\r\n label: 'editable',\r\n \r\n },\r\n \r\n {\r\n name: 'timestampParameters',\r\n type: 'text',\r\n label:\r\n 'sets a timestamp after main event. multiple parameters via comma seperation',\r\n }\r\n ]\r\n }\r\n}\r\n}","import { lazy } from 'react';\r\nexport default class BBMenubarDescriptor {\r\n\r\nstatic getDescription() {\r\n return {\r\n name: 'BB Component',\r\n component: lazy(() => import('./BBComponent')),\r\n label: 'BB Component (Experimental)',\r\n type:\"experimental\",\r\n variables: [\r\n \r\n\r\n {\r\n name: 'url',\r\n type: 'text',\r\n label: 'use an url to another app to re-use the main widget.'\r\n },\r\n {\r\n name: 'urlData',\r\n type: 'json',\r\n //label: 'Column widths or row heights (separated by commas). Value can be a number (which will be set as flex values/verhoudingswaarden) or a px/% value',\r\n label: 'a copy of the config data from the app specified by the url (not implemented yet)'\r\n }\r\n \r\n ],\r\n }\r\n }\r\n}\r\n","import { lazy } from 'react';\r\nexport default class BBMenubarDescriptor {\r\n\r\nstatic getDescription() {\r\n return {\r\n name: 'BB Menubar',\r\n component: lazy(() => import('./BBMenubar')),\r\n label: 'Menubar (Experimental)',\r\n type:\"experimental\",\r\n variables: [\r\n {\r\n name: 'query',\r\n type: 'yasgui',\r\n label:\r\n 'use parameter ?uri ?label ?parent ?command (not yet implemented) '\r\n \r\n },\r\n {\r\n name: 'perspectives',\r\n type: 'json',\r\n label: 'a JSON array for defining perspectives in the for [ { \"label\": \"label\",\"key\":\"home\",\"icon\":\"pi pi-fw pi-inbox\",\"children\":[] }]',\r\n },\r\n\r\n {\r\n name: 'menubarconfig',\r\n type: 'json',\r\n label: 'JSON configuration for the menubar. eg {\"id\": \"chatagent\",\"icon\": \"pi pi-help\",\"label\": \"Chat\",\"subcommand\": \"popup\"} other subcommands are runrule and perspectives. you can use item:[] to specify children' \r\n },\r\n {\r\n name: 'areas',\r\n type: 'json',\r\n //label: 'Column widths or row heights (separated by commas). Value can be a number (which will be set as flex values/verhoudingswaarden) or a px/% value',\r\n label: 'area definitions'\r\n }\r\n \r\n ],\r\n }\r\n }\r\n}\r\n","import { lazy } from 'react';\r\nexport default class BBMPythonDescriptor {\r\n\r\nstatic getDescription() {\r\n return {\r\n name: 'BBPython',\r\n component: lazy(() => import('./BBPython')),\r\n label: 'BB Python in the browser (experimental)',\r\n type:\"experimental\",\r\n variables: [\r\n \r\n\r\n {\r\n name: 'pythoncode deprecated. will be deleted soon',\r\n type: 'text',\r\n label: 'python code to execute between {}'\r\n },\r\n {\r\n name: 'pythoncode2',\r\n type: 'json',\r\n label: 'python code to execute between 2 {}'\r\n },\r\n \r\n \r\n ],\r\n }\r\n }\r\n}\r\n","import React from 'react'\n\nexport const configOptions = [\n {\n name: 'query',\n type: 'yasgui',\n label: 'Query where all possible sources for the video queried as `?src_URL`s',\n },\n {\n name: 'textLoading',\n type: 'text',\n label: 'text when loading',\n },\n {\n name: 'textNoResults',\n type: 'text',\n label: 'text when no results',\n },\n {\n name: 'columnCount',\n type: 'text',\n label: 'number of columns',\n },\n {\n name: 'textErrorLoading',\n type: 'text',\n label: 'text when error loading results',\n },\n {\n name: 'deletionRule',\n type: 'text',\n label: 'rule triggered when requesting delete',\n },\n {\n name: 'deletionRuleParamsJSON',\n type: 'json-text',\n label: 'parameters for the rulechain, for example {\"graph\":\"{{graph}}\"}',\n },\n]\n\nexport const imageGalleryWidgetDescription = {\n name: 'Image Gallery',\n component: React.lazy(() => import('./ImageGallery')),\n label: 'Image Gallery [Temporary]',\n variables: configOptions,\n}\n","import { lazy } from 'react';\r\nexport default class BBMJOPWidgetDescriptor{ \r\n\r\nstatic getDescription() {\r\n \r\n return {\r\n name: 'BBMJOPwidget',\r\n component: lazy(() => import('./BBMJOPWidget.js')),\r\n label: 'MJOP Widget (experimental)',\r\n type:\"experimental\",\r\n variables: [\r\n \r\n {\r\n name: 'query',\r\n type: 'yasgui',\r\n label: 'use parameter... (not yet implemented) ',\r\n defaultValue: `prefix m:\r\nselect distinct ?uri ?nr ?locatie ?beschrijving ?conditie ?cyclus ?aantal ?eenheid ?procent ?prijsPerEenheid ?btw ?startDatum ?kostenInc ?kostenEx ?totaal ?gemiddeldePerJaar ?opmerkingen ?jaar2025 ?jaar2026 ?jaar2027 ?jaar2028 ?jaar2029 ?jaar2030 ?jaar2031 ?jaar2032 ?jaar2033 ?jaar2034 ?jaar2035 ?jaar2036 ?jaar2036 ?jaar2038 ?jaar2039 ?jaar2040 ?jaar2041 ?jaar2042 ?jaar2043 ?jaar2044 ?jaar2045\r\n from \r\nwhere\r\n{\r\n ?uri m:nr ?nr.\r\n optional {?uri m:locatie ?locatie}\r\n optional {?uri m:beschrijving ?beschrijving}\r\n optional {?uri m:conditie ?conditie}\r\n optional {?uri m:cyclus ?cyclus}\r\n optional {?uri m:aantal ?aantal}\r\n optional {?uri m:eenheid ?eenheid}\r\n optional {?uri m:procent ?procent}\r\n optional {?uri m:prijsPerEenheid ?prijsPerEenheid}\r\n optional {?uri m:btw ?btw}\r\n optional {?uri m:startDatum ?startDatum}\r\n optional {?uri m:kostenInc ?kostenInc}\r\n optional {?uri m:kostenEx ?kostenEx}\r\n optional {?uri m:totaal ?totaal}\r\n optional {?uri m:gemiddeldePerJaar ?gemiddeldePerJaar}\r\n optional {?uri m:opmerkingen ?opmerkingen}\r\n optional {?uri m:jaar2025 ?jaar2025}\r\n optional {?uri m:jaar2026 ?jaar2026}\r\n optional {?uri m:jaar2027 ?jaar2027}\r\n optional {?uri m:jaar2028 ?jaar2028}\r\n optional {?uri m:jaar2029 ?jaar2029}\r\n optional {?uri m:jaar2030 ?jaar2030}\r\n optional {?uri m:jaar2031 ?jaar2031}\r\n optional {?uri m:jaar2032 ?jaar2032}\r\n optional {?uri m:jaar2033 ?jaar2033}\r\n optional {?uri m:jaar2034 ?jaar2034}\r\n optional {?uri m:jaar2035 ?jaar2035}\r\n optional {?uri m:jaar2036 ?jaar2036}\r\n optional {?uri m:jaar2037 ?jaar2037}\r\n optional {?uri m:jaar2038 ?jaar2038}\r\n optional {?uri m:jaar2039 ?jaar2039}\r\n optional {?uri m:jaar2040 ?jaar2040}\r\n optional {?uri m:jaar2041 ?jaar2041}\r\n optional {?uri m:jaar2042 ?jaar2042}\r\n optional {?uri m:jaar2043 ?jaar2043}\r\n optional {?uri m:jaar2044 ?jaar2044}\r\n optional {?uri m:jaar2045 ?jaar2045}\r\n\r\n \r\n \r\n \r\n}`\r\n \r\n },\r\n {\r\n name: 'defaultgraph',\r\n type: 'text',\r\n label: 'default graph to insert data into',\r\n },\r\n {\r\n name: 'relatedTo',\r\n type: 'text',\r\n label: 'http://wistor.nl/mjop/relatedTo value for each new record',\r\n },\r\n {\r\n name: 'minYear',\r\n type: 'text',\r\n label: 'minimum year for the MJOP defaultvalue is 2025',\r\n },\r\n {\r\n name: 'maxYear',\r\n type: 'text',\r\n label: 'maximum year for the MJOP default value is 2045',\r\n },\r\n {\r\n name: 'timestampParameters',\r\n type: 'text',\r\n label:\r\n 'sets a timestamp after main event. multiple parameters via comma seperation',\r\n }\r\n \r\n \r\n \r\n ],\r\n }\r\n }\r\n}\r\n","import { lazy } from 'react';\r\nexport default class BBMPythonServerPageDescriptor {\r\n\r\nstatic getDescription() {\r\n return {\r\n name: 'BBPythonServerPage',\r\n component: lazy(() => import('./BBPythonServerPage')),\r\n label: 'BB Python Server page (experimental)',\r\n type:\"experimental\",\r\n variables: [\r\n \r\n\r\n {\r\n name: 'extra script on iframe',\r\n type: 'text',\r\n label: 'something to manage extra scripts. Not yet implemented. '\r\n },\r\n {\r\n name: 'url',\r\n type: 'text',\r\n label: 'python server page url. please add ?embed=true'\r\n },\r\n \r\n \r\n ],\r\n }\r\n }\r\n}\r\n","\n//import BBPropertyPanel from './bb/BBPropertyPanel'\nimport BBPropertyPanel from './bb/BBPropertyPanelDescriptor'\nimport BBCheckboxTree from './bb/BBCheckboxTreeDescriptor'\n\nimport Table from './TableDescriptor'\nimport Table2 from './Table2'\nimport TableCells from './TableCells'\nimport Tree from './TreeDescriptor'\nimport TreeD3 from './TreeD3Descriptor';\n\n\nimport SelectBox from './SelectBox'\nimport Slider from './Slider'\nimport SearchAutocomplete from './SearchAutocomplete'\nimport Tab from './Tab'\nimport SplitLayout from './SplitLayout'\nimport SplitLayoutTest from './SplitLayoutTestDescriptor'\nimport Yasgui from './Yasgui'\nimport BBMapExperimental from './bb/BBMap'\nimport BBMap from './bb/BBMapExperimental'\nimport BBMultiMap from './bb/BBMultiMap'\n\nimport BBTreeTable from './bb/BBTreeTable'\nimport BBYasgui from './bb/BBYasgui'\nimport BBYasguiLatest from './bb/BBYasguiLatest'\nimport BBYasr from './bb/BBYasr'\nimport BBYasguiNotebook from './bb/BBYasguiNotebook'\nimport BBNotebook from './bb/BBNotebook'\nimport BBKGApiVizWidget from './bb/BBKGApiVizWidget'\nimport BBVoyager from './bb/BBVoyager'\nimport BBAccordion from './bb/BBAccordionDescriptor'\nimport BBPicture from './bb/BBPicture'\nimport BBHTML from './bb/BBHTML'\nimport BBDForm from './bb/editor/BBDFormDescriptor'\n//import BBForm from './bb/editor/BBForm';\n//import BBGrid from './bb/editor/BBGrid';\nimport BBSideMenu from './bb/BBSideMenuDescriptor'\nimport BBEChart from './bb/BBEChartDescriptor'\nimport BBBoorkern from './bb/BBBoorkern'\nimport StartRuleButton from './bb/rules/StartRuleButtonDescriptor'\n\nimport BBVis from './bb/BBVis'\nimport BBLinkButtons from './bb/BBLinkButtons'\nimport BBIFCViewer from './bb/BBIFCViewer'\nimport BBStructuredText from './bb/BBStructuredTextDescriptor'\n\n//import BBLayout from './bb/BBLayout';\nimport BBKVKProductTemplate from './bb/kvk/BBKVKProductTemplateDescriptor'\nimport BBKVKFlexibleTextWidget from './bb/kvk/BBKVKFlexibleTextWidget'\nimport BBBackMenu from './bb/BBBackMenu'\nimport BBSimplePushButton from './bb/BBSimplePushButtonDescriptor'\nimport BBVenn from './bb/BBVenn'\nimport BBForm from './bb/BBForm'\nimport BBUpload from './bb/BBUploadDescriptor'\nimport BBNOML from './bb/BBNOML'\nimport ButtonPopup from './bb/rotterdam/ButtonPopupDescriptor'\nimport BBRDFViewer from './bb/BBRDFViewer'\nimport BBCesium from './bb/BBCesium'\n//import BBRDFViewerOnline from './bb/BBRDFViewerOnline'\n//import BBMultiSelect from './bb/BBMultiSelect'\nimport BBSVG from './bb/BBSVG'\n//import BBThreeJS from './bb/BBThreeJS'\nimport BBDWegselectorDescriptor from './bb/venr/BBWegselectorDescriptor';\nimport BBParameterLinkEmptyWidget from './bb/BBParameterLinkEmptyWidget'\nimport { SequencePaths } from './SequencePaths'\nimport BBIFCJSViewer from './bb/BBIFCJSViewerDescriptor'\nimport BBThreeJSViewer from './bb/ifc/BBThreeJSViewerDescriptor'\nimport BBSparnatural from './bb/BBSparnaturalDescriptor'\n//import LDWizardDescriptor from './bb/ldwizard/LDWizardDescriptor'\nimport NebulaDescriptor from './bb/deck/NebulaDescriptor'\nimport { textInputWidgetDescription } from './TextInput'\nimport { dynamicFilterWidgetDescription } from \"./DynamicFilter\"\nimport { excelWidgetDescription } from './ExcelWidgetDescriptor'\nimport { toggleWidgetDescription } from './ToggleWidget'\nimport { jobStatusWidgetDescription } from './jobStatusWidgetDescription'\nimport { videoPlayerDescription } from './VideoPlayer/WidgetDescription'\n\nimport BBLibremapDescriptor from './bb/BBLibremapDescriptor'\nimport BBMermaidDescriptor from './bb/BBMermaidDescriptor'\n// basic\nimport ListDescriptor from './ListDescriptor'\nimport RadioBoxDescriptor from './RadioBox'\nimport { TablePlusPlusDescription } from './TablePlusPlus/tablePlusPlusWidgetDescription'\n// import Search from './Search';\nimport IFCJSViewerV3Descriptor from './ifcjs/IFCJSViewerV3Descriptor'\nimport BBIfcViewerNextGen from \"./bb/BBIfcViewerNextGen\"\nimport BBTableDescriptor from './bb/BBTableDescriptor'\nimport BBSVGEditorDescriptor from \"./bb/BBSVGEditorDescriptor\"\nimport BBGanttChartDescriptor from './bb/BBGanttChartDescriptor'\nimport BBComponentDescriptor from './bb/prime/BBComponentDescriptor'\n\nimport BBMenubarDescriptor from './bb/prime/BBMenubarDescriptor'\nimport BBMPythonDescriptor from './bb/experimental/BBPythonDescriptor'\nimport { imageGalleryWidgetDescription } from './ImageGallery/ImageGalleryWidgetDescription'\nimport BBMJOPWidgetDescriptor from './bb/experimental/BBMJOPWidgetDescriptor'\n//import BBStepperDescriptor from./bb/prime/BBStepperDescriptor.js__or'\nimport BBPythonServerPageDescriptor from './bb/experimental/BBPythonServerPageDescriptor'\n\nlet widgetDefinitions = [\n //layout\n\n BBSideMenu.getDescription(),\n SplitLayout.getDescription(),\n SplitLayoutTest.getDescription(),\n Tab.getDescription(),\n BBAccordion.getDescription(),\n BBMJOPWidgetDescriptor.getDescription(),\n BBPythonServerPageDescriptor.getDescription(),\n\n\n //experimental\n BBMenubarDescriptor.getDescription(),\n //BBStepperDescriptor.getDescription(),\n BBComponentDescriptor.getDescription(),\n BBMPythonDescriptor.getDescription(),\n\n//basic\n\n\n\n \n\n\n\n\n BBGanttChartDescriptor.getDescription(),\n\n BBEChart.getDescription(),\n BBVis.getDescription(),\n \n ListDescriptor.getDescription(),\n\n Slider.getDescription(),\n SelectBox.getDescription(),\n //BBMultiSelect.getDescription(),\n RadioBoxDescriptor.getDescription(),\n SearchAutocomplete.getDescription(),\n Tree.getDescription(),\n SequencePaths.getDescription(),\n BBCheckboxTree.getDescription(),\n \n //BBPropertyPanel.getDescription(),\n BBSVGEditorDescriptor.getDescription(),\n BBPropertyPanel.getDescription(),\n TreeD3.getDescription(),\n Table.getDescription(),\n Table2.getDescription(),\n TableCells.getDescription(),\n textInputWidgetDescription,\n {\n name: 'Yasgui',\n component: Yasgui,\n label: 'Yasgui widget',\n },\n TablePlusPlusDescription,\n BBTableDescriptor.getDescription(),\n BBTreeTable.getDescription(),\n BBPicture.getDescription(),\n BBHTML.getDescription(),\n BBBackMenu.getDescription(),\n BBSimplePushButton.getDescription(),\n dynamicFilterWidgetDescription,\n // 2d\n\n\n\n \n \n BBMap.getDescription(),\n BBMapExperimental.getDescription(),\n BBLibremapDescriptor.getDescription(),\n BBMultiMap.getDescription(),\n\n //3d\n BBCesium.getDescription(),\n BBIFCViewer.getDescription(),\n BBIFCJSViewer.getDescription(),\n BBThreeJSViewer.getDescription(),\n\n\n //edit\n BBYasgui.getDescription(),\n BBYasguiLatest.getDescription(),\n {\n name: 'BBYasguiNotebook',\n component: BBYasguiNotebook,\n label: 'BB YasGUINotebook',\n variables: [],\n },\n {\n name: 'BBNotebook',\n component: BBNotebook,\n label: 'BB Notebook',\n variables: [],\n },\n BBYasr.getDescription(),\n {\n name: 'BBKGApiVizWidget',\n component: BBKGApiVizWidget,\n label: 'BBKGApiVizWidget',\n variables: [\n {\n name: 'query',\n type: 'yasgui',\n label: 'just to start. ',\n },\n ],\n },\n BBDForm.getDescription(),\n\n\n\n // graphics\n BBNOML.getDescription(),\n BBVoyager.getDescription(),\n BBMermaidDescriptor.getDescription(),\n BBBoorkern.getDescription(),\n \n//utils\n\n \n\n//other\n BBKVKProductTemplate.getDescription(),\n BBKVKFlexibleTextWidget.getDescription(),\n BBLinkButtons.getDescription(),\n \n\n\n BBStructuredText.getDescription(),\n BBVenn.getDescription(),\n BBSVG.getDescription(),\n BBForm.getDescription(),\n BBUpload.getDescription(),\n ButtonPopup.getDescription(),\n BBRDFViewer.getDescription(),\n //BBRDFViewerOnline.getDescription(),\n// BBThreeJS.getDescription(),\n //LDWizardDescriptor.getDescription(),\n BBDWegselectorDescriptor.getDescription(),\n BBParameterLinkEmptyWidget.getDescription(),\n\n StartRuleButton.getDescription(),\n NebulaDescriptor.getDescription(),\n BBSparnatural.getDescription(),\n \n excelWidgetDescription,\n toggleWidgetDescription,\n jobStatusWidgetDescription,\n IFCJSViewerV3Descriptor.getDescription(),\n BBIfcViewerNextGen.getDescription(),\n videoPlayerDescription,\n imageGalleryWidgetDescription,\n]\n\nexport default widgetDefinitions\n\nexport const widgetDefinitionsSorted = widgetDefinitions.sort((a, b) => a.label.localeCompare(b.label))\n","import React from 'react'\nimport { original, produce } from 'immer'\nimport styles from './WidgetConfiguration.module.css'\n\nimport Dialog from './Dialog'\nimport { Button } from 'reactstrap'\nimport { FormGroup } from './FormGroup'\nimport FormField from './FormField'\n\nimport { ConfigDescription, ConfigurablePropsFromDescription } from '../helpers/widget'\nimport { widgetDefinitionsSorted } from './widgets'\nimport { DEFAULT_WIDGET_CONFIG } from './default-widget-config'\nimport { forEachEntry } from '../utils/typescript'\nimport { useDebounce } from '../hooks/use-debounce'\n\ntype WidgetConfig\n = GeneralWidgetConfig\n & ConfigurablePropsFromDescription\n\ntype GeneralWidgetConfig = {\n widget: string\n panelstyle: string\n panelstyleExtra: string\n titleMenubar: string\n infoMenubar: string\n colorPrimaryAction: boolean\n showLoadingOverlay: boolean\n syncWithUserActionsDisabled: boolean\n voteForUserActionsDisabledWhenLoading: boolean\n hidden: string\n finalTopLeftBorderRadius: string\n finalTopRightBorderRadius: string\n finalBottomLeftBorderRadius: string\n finalBottomRightBorderRadius: string\n hiddenwhenparametersareempty: string\n}\n\ntype AnyWidgetDefinition = {\n label: string,\n name: string,\n variables: ConfigDescription[],\n}\n\ntype State = {\n waitingToSaveAndClose: boolean\n configInput: WidgetConfig\n configOriginal: WidgetConfig\n feedback: {\n warning: Record\n error: Record\n },\n}\n\nexport function WidgetConfiguration(props: {\n configRendered: WidgetConfig\n widgetDefinition?: AnyWidgetDefinition\n close: () => void\n saveConfigRendered: () => void\n setConfigToRender: (config: WidgetConfig) => void\n}) {\n const [state, setState] = React.useState(() => ({\n waitingToSaveAndClose: false,\n feedback: {warning: {}, error: {}},\n configInput: props.configRendered,\n configOriginal: props.configRendered,\n }))\n\n React.useEffect(() => {\n if (!state.waitingToSaveAndClose) return\n if (props.configRendered !== state.configInput) return\n props.saveConfigRendered()\n props.close()\n }, [state.waitingToSaveAndClose, props.configRendered])\n\n // ref, because we want it instantly updated without need for reactivity\n const delayedUpdateEnabled = React.useRef(true)\n\n const updateConfigField = (key: string, value: any) =>\n setState(produce(draft => {\n if (key === 'widget') {\n mutateWidgetTypeWithDefaults(draft.configInput, value)\n } else {\n draft.configInput = {...draft.configInput, [key]: value}\n }\n }))\n\n useDebounce(() => {\n if (state.configInput === props.configRendered) return\n if (delayedUpdateEnabled.current) props.setConfigToRender(state.configInput)\n }, 200, [state.configInput])\n\n const setConfigFeedback = (\n varName: string, type: 'valid' | 'warning' | 'error', message?: React.ReactNode\n ) => setState(produce(draft => {\n switch (type) {\n case 'valid':\n delete draft.feedback.error[varName]\n delete draft.feedback.warning[varName]\n return\n case 'error':\n delete draft.feedback.warning[varName]\n draft.feedback.error[varName] = message\n return\n case 'warning':\n delete draft.feedback.error[varName]\n draft.feedback.warning[varName] = message\n return\n default:\n throw new Error('Oops should be unreachable, dev spaghetti. If this happens often, migrate (partially) to TypeScript')\n }\n }))\n\n const widgetDefinition = props.widgetDefinition ?? widgetDefinitionsSorted.find(w => w.name === state.configInput.widget)\n\n return (\n \n ({\n label: wd.label,\n value: wd.name,\n })),\n ]}\n value={state.configInput.widget}\n onChange={updateConfigField}\n />\n \n \n\n \n \n \n \n Behaviour on loading\n \n \n \n \n \n\n {shouldApplyBorderRadius(state.configInput.widget) && (\n <>\n \n \n \n \n \n )}\n \n\n {widgetDefinition?.variables?.map((variable) => (\n setConfigFeedback(variable.name, type, message)}\n />\n ))}\n\n {Boolean(Object.keys(state.feedback.error).length) && (\n
\n {Object.values(state.feedback.error)}\n
\n )}\n\n
\n {\n props.setConfigToRender(state.configOriginal)\n props.close()\n }}\n >\n Cancel\n \n {\n delayedUpdateEnabled.current = false\n props.setConfigToRender(state.configInput)\n setState(s => ({...s, waitingToSaveAndClose: true}))\n }}\n >\n OK\n \n
\n
\n )\n}\n\nfunction mutateWidgetTypeWithDefaults(config: T, widget: T['widget']) {\n config.widget = widget\n\n if (\n widget === 'SplitLayout' || widget === 'SplitLayoutTest' ||\n widget === 'BBKVKProductTemplate' || widget === 'BB ButtonPopup'\n ) {\n const layoutConfig = config as any\n layoutConfig.direction = 'column'\n layoutConfig.areas = [original(layoutConfig)]\n if (widget === 'SplitLayoutTest') {\n layoutConfig.areaSizes = ['1', '1']\n } else {\n layoutConfig.areaSizes = ['200px', '1']\n }\n\n } else if (widget === 'Tab' || widget === 'BBSideMenu') {\n const configWithTabs = config as any\n configWithTabs.tabs = ['Tab 1', 'Tab 2']\n configWithTabs.areas = [original(config)]\n\n } else {\n const childConfigOfSameType =\n (config as any).areas &&\n (config as any).areas.find((area: WidgetConfig) => area && area.widget === widget)\n if (childConfigOfSameType) config = childConfigOfSameType\n }\n\n forEachEntry(DEFAULT_WIDGET_CONFIG.general, (key) => {\n if (!(key in config)) config[key] = DEFAULT_WIDGET_CONFIG.general[key]\n })\n\n const defaultConfig = DEFAULT_WIDGET_CONFIG[config.widget as keyof typeof DEFAULT_WIDGET_CONFIG]\n if (defaultConfig != null) {\n forEachEntry(defaultConfig, (key) => {\n if (!(key in config)) config[key] = defaultConfig[key]\n })\n }\n}\n\nexport function shouldApplyBorderRadius(widgetName: string) {\n if (!widgetName) return false\n return widgetName !== 'BBParameterLinkEmptyWidget' && !widgetName.includes('SplitLayout')\n}\n","import { Component } from 'react'\nimport { connect } from \"react-redux\"\nimport uniqueId from \"lodash.uniqueid\"\nimport styles from './Area.module.css'\n\nimport gearWhite from '../images/gear-white.svg'\nimport gearBlue from '../images/gear-blue.svg'\nimport insertIcon from '../images/plus.svg'\nimport infoIcon from '../images/info.svg'\nimport deleteIcon from '../images/cross.svg'\n\nimport PublishUtils from '../helpers/PublishUtils'\nimport Widget from './Widget'\nimport Dialog from './Dialog'\nimport { Grow } from '@mui/material'\nimport { isUserActionsDisabled } from \"../redux/current-viewer\"\nimport { WidgetWrapper } from \"./WidgetWrapper\"\nimport { LargeTooltip } from \"./mui/LargeTooltip\"\nimport { interpolateSubscriptions } from '../helpers/widget'\nimport { store } from \"../store\"\nimport { WidgetConfiguration, shouldApplyBorderRadius } from './WidgetConfiguration'\nimport { widgetDefinitionsSorted } from './widgets'\n\nclass Area extends Component {\n state = {\n dialogVisible: false,\n }\n\n constructor(props) {\n super(props)\n try\n {\n this.widgetId = uniqueId(`${props.config.widget}-`)\n }\n catch(e){}\n }\n\n componentWillUnmount() {\n // Make sure to revoke the vote when unmounting\n if (this.hasVotedForUserActionsDisabled()) {\n this.handleVoteForUserActionsDisabled(false)\n }\n }\n\n onInsertLayout = (name) => {\n let config = {\n ...this.props.config,\n }\n var split = null\n if (\n window.confirm(\n 'Do you want this widget to be the first element in the new splitlayout'\n )\n ) {\n split = {\n areaSizes: ['auto', 'auto'],\n areas: [config, {}],\n direction: 'column',\n widget: 'SplitLayout',\n }\n } else {\n if (\n window.confirm(\n 'Do you want this widget to be the second element in the new splitlayout'\n )\n ) {\n split = {\n areaSizes: ['auto', 'auto'],\n areas: [{}, config],\n direction: 'column',\n widget: 'SplitLayout',\n }\n } else {\n if (\n window.confirm(\n 'Do you want this widget to be the third element in the new splitlayout or cancel all'\n )\n ) {\n split = {\n areaSizes: ['auto', 'auto', 'auto'],\n areas: [{}, {}, config],\n direction: 'column',\n widget: 'SplitLayout',\n }\n } else {\n return\n }\n }\n }\n\n this.props.onChange(split, this.props.index)\n }\n\n \n onDeleteWidget = (name) => {\n if (window.confirm('are you sure that you want to delete this?')) {\n let config = {\n ...this.props.config,\n }\n\n config = {}\n this.props.onChange(config, this.props.index)\n }\n }\n\n onChildChange = (config, index) =>\n {\n try \n {\n let newConfig = {\n ...this.props.config,\n }\n \n newConfig.areas[index] = config\n this.props.onChange(newConfig, this.props.index)\n }\n catch(e)\n {\n console.log(e);\n }\n \n }\n\n onShowPopupInfo = () => {\n this.setState({ popupInfoVisible: true })\n let me = this\n setTimeout(function () {\n me.infoPopupClose()\n }, 2500)\n }\n\n infoPopupClose = () => {\n this.setState({ popupInfoVisible: false })\n }\n\n openConfigurationWindow = () => this.setState({dialogVisible: true})\n closeConfigurationWindow = () => this.setState({dialogVisible: false})\n\n /**\n * Not subscribing to this value from the store, for performance reasons.\n * In the conventional manner we would use mapStateToProps, but that triggers unnecessary cascading rerenders.\n * @return {boolean}\n */\n hasVotedForUserActionsDisabled() {\n return store.getState().currentViewer.votersForGlobalUserActionsDisabled.has(this.widgetId)\n }\n\n /**\n * @param userActionsDisabled {boolean}\n */\n handleVoteForUserActionsDisabled = (userActionsDisabled) => {\n this.props.dispatch({\n type: \"VOTE_USER_ACTIONS_DISABLED\",\n data: {\n voterId: this.widgetId,\n value: userActionsDisabled\n }\n })\n }\n\n renderWidget(config, widgetDefinition) {\n if (!config.widget) {\n if (this.props.mode === 'edit') return
Selecteer een widget.
\n return\n }\n if ((this.props.mode === 'edit') && (widgetDefinition==null)) return
Selecteer een widget.
\n if (widgetDefinition==null) return null;\n if (interpolateSubscriptions(this, config.hidden, 'boolean')) return null\n\n const widgetUserActionsDisabled = !!config.syncWithUserActionsDisabled && this.props.userActionsDisabled\n\n return (\n \n \n \n \n \n )\n }\n\n render() {\n // if (this.props.withinSelectedTab==false) return false;\n\n // console.log(this);\n let config = this.props.config || {}\n \n\n\n\n\n let menubar = false\n let titleMenuBar = config.titleMenubar\n if (titleMenuBar != null) {\n titleMenuBar = titleMenuBar.trim()\n titleMenuBar = PublishUtils.processStringForParameters(this, titleMenuBar)\n titleMenuBar=PublishUtils.removeUnresolvedParametersFromString(titleMenuBar)\n\n }\n if (titleMenuBar != null && titleMenuBar !== '' && titleMenuBar !== ' ') {\n menubar = true\n }\n // console.log(\"titleMenubar '\"+titleMenuBar+\"'\");\n\n let mode = this.props.mode\n let widgetDefinition = widgetDefinitionsSorted.find(\n (widgetDefinition) => widgetDefinition.name === config.widget\n )\n try {\n var queryDef=widgetDefinition.variables.find(obj => obj.name === \"query\");\n if (queryDef!=null)\n {\n //console.log(\"widget with query parameter\")\n if (config.query==null)\n {\n config.query=queryDef.defaultQuery;\n // console.log(\"setting default query\");\n }\n }\n }\n catch(e){}\n\n\n\n\n\n let extraStyling1 = ''\n let extraStyling2 = ''\n let extraStyling3 = ''\n let extraStyling4 = ''\n if (config.panelstyleExtra != null) {\n var sts = config.panelstyleExtra.split(' ')\n try {\n extraStyling1 = sts[0]\n } catch (e) {}\n try {\n extraStyling2 = sts[1]\n } catch (e) {}\n try {\n extraStyling3 = sts[2]\n } catch (e) {}\n try {\n extraStyling4 = sts[3]\n } catch (e) {}\n }\n let displayFlex = ' ' + styles.outerAreaContainerDisplayFlex\n //not used\n if (this.props.disableFlexbox) {\n // console.log(\"disable flexbox for this area\") ;\n displayFlex = ''\n }\n let infoMenubarb = false\n if (config.infoMenubar != null) {\n if (config.infoMenubar.length > 2) {\n infoMenubarb = true\n }\n }\n var appear=true;\n var hidden = config.hidden;\n if (hidden==null) hidden=false;\n if (hidden!=false) {\n \n hidden=PublishUtils.processStringForParameters(this,hidden);\n try {hidden=JSON.parse(hidden.toLowerCase());} catch(e){}\n //console.log(\"2\",hidden,mode);\n //if (hidden==true) console.log(\"3 hidden=true\");\n //if (hidden==false) console.log(\"4 hidden=false\");\n \n }\n var hidden2= config.hiddenwhenparametersareempty;\n if (hidden2?.length)\n {\n \n var hids2=hidden2.split(\",\");\n //console.log(\"hidden2\",hids2);\n for (var n in hids2)\n {\n var hid2=hids2[n];\n if (this.props.pubsub[hid2]==null) hidden=true;\n if (this.props.pubsub[hid2]==\"http://www.buildingbits.nl/reset\") hidden=true;\n }\n }\n\n \n var visibilityState =hidden ? \"hidden\" : \"visible\";\n if (mode==='edit') { visibilityState=\"visible\"; }\n\n \n\n\n return (\n \n
\n {mode === 'edit' && (\n
\n
\n \n
\n this.onInsertLayout(config.widget)}\n />\n \n this.onDeleteWidget(config.widget)}\n />\n
\n \n
\n )}\n\n {menubar && (\n
\n
{titleMenuBar}
\n {infoMenubarb && (\n this.onShowPopupInfo()}\n />\n )}\n
\n )}\n\n {this.renderWidget(config, widgetDefinition)}\n\n {this.state.popupInfoVisible && (\n \n
{config.infoMenubar}
\n
\n )}\n\n {this.state.dialogVisible && (\n this.props.onChange(config, this.props.index)}\n />\n )}\n
\n \n \n )\n }\n}\n\nconst mapStateToProps = function (state) {\n return {\n userActionsDisabled: isUserActionsDisabled(state.currentViewer)\n }\n}\n\nfunction withTopicValues(config, widgetDefinition, widget) {\n if (config==null)\n {\n console.log(\"this is weird\");\n config={};\n }\n const newConfig = {...config} // sometimes config is null resulting in errors here.\n const widgetDefinitionVariables = widgetDefinition?.variables ?? []\n for (const variable of widgetDefinitionVariables) {\n if (variable.topicValueInterpolationEnabled) {\n if (Array.isArray( newConfig[variable.name])) {\n newConfig[variable.name] = newConfig[variable.name].map(valueString => PublishUtils.processStringForParameters(widget, valueString))\n }\n else if (typeof newConfig[variable.name] === 'string') {\n newConfig[variable.name] = PublishUtils.processStringForParameters(widget, newConfig[variable.name])\n }\n }\n }\n return newConfig\n}\n\n/**\n * Workaround until proper typing\n * source: https://stackoverflow.com/a/49806135\n * @type {React.ComponentType}\n */\nexport default connect(mapStateToProps)(Area)\n","import Command from \"./Command\"\nimport { resolveTemplateStringAndLogErrors } from \"./resolve-template-string\"\nimport { store } from \"../store\"\nimport { isValidUri } from \"../utils/uri\"\n\nexport function runStartRule(ruleTagOrUriTemplate: string, parametersJson: string | null | undefined, additionalTemplateVariables?: Record) {\n const dict = {\n ...(store.getState()?.pubsub ?? {}),\n ...(additionalTemplateVariables ?? {}),\n \n }\n //console.log(dict)\n return new Promise((resolve, reject) => {\n \n const resolvedRule = resolveTemplateStringAndLogErrors(ruleTagOrUriTemplate, dict)\n const resolvedParameters = resolveTemplateStringAndLogErrors(parametersJson ?? \"\", dict)\n //console.log(\"promise\",resolvedParameters,dict);\n \n \n\n if (isValidUri(resolvedRule)) {\n Command.ruleRule(resolvedRule, resolvedParameters, resolve, reject)\n } else {\n Command.runRulesWithTag(resolvedRule, resolvedParameters, resolve, reject)\n }\n })\n}\n","import ReactDOM from \"react-dom\"\n\nconst getRoot = () => {\n let element = document.getElementById('modals');\n if (!element) {\n element = document.createElement('div');\n element.setAttribute('id', 'modals');\n document.body.appendChild(element);\n }\n return element;\n};\n\ninterface ShowableComponentProps {\n onClose: (result: TResult) => void;\n}\n\nexport type ShowableComponent = (props: ShowableComponentProps & TProps) => JSX.Element;\n\nconst show = (\n Component: ShowableComponent,\n props?: Omit\n) => {\n const root = getRoot();\n const container = document.createElement('div');\n root.appendChild(container);\n\n const cleanup = () => {\n // @ts-ignore Render null is a valid use-case\n ReactDOM.render(null, container);\n container.remove();\n };\n\n return new Promise((resolve) => {\n const closeHandler = (result: TResult) => {\n resolve(result);\n cleanup();\n };\n\n ReactDOM.render(\n /* @ts-ignore Unclear what the problem is here */\n ,\n container\n );\n });\n};\n\nexport const useDialog = () => {\n return (\n Component: ShowableComponent,\n props?: Omit\n ) => show(Component, props);\n};\n","import {clsx, type ClassValue} from 'clsx'\nimport {twMerge} from 'tailwind-merge'\n\nexport function mergeClasses(...args: ClassValue[]) {\n return twMerge(clsx(args))\n}\n","export const DEFAULT_WIDGET_CONFIG = {\n general: {\n voteForUserActionsDisabledWhenLoading: true,\n syncWithUserActionsDisabled: true,\n showLoadingOverlay: true\n },\n SelectBox: {\n preSelectFirstItem: true\n },\n ToggleWidget: {\n appearance: 'icon',\n publishTopic: 'defaultTopic',\n enabledBgColor: '#00589b',\n disabledBgColor: 'gray'\n },\n \"BB ButtonPopup\": {\n popupMinWidth: '600px',\n popupMaxWidth: '100vw',\n popupMinHeight: '0',\n popupMaxHeight: '100vh',\n popupCloseOnBackdropClick: true,\n popupCloseOnEscapeKey: true\n },\n BBParameterLinkEmptyWidget: {\n showLoadingOverlay: false\n },\n JobStatus: {\n statusLabels: {\n \"RUNNING\": \"running\",\n \"QUEUED\": \"queued\"\n },\n statusTextTemplateString: \"{{.count}} {{.status}}\",\n refetchInterval: \"5\"\n },\n IFCJSViewerV3: {\n resetSelectionOnSparqlUpdate: true\n }\n} as const\n","import Yasqe from '@triply/yasqe'\n\nexport type CurrentViewerState = {\n appCss: Record\n activeYasqes: Yasqe[]\n votersForGlobalUserActionsDisabled: Set\n config?: Record | null\n}\n\nconst initialState: CurrentViewerState = {\n appCss: {},\n activeYasqes: [],\n votersForGlobalUserActionsDisabled: new Set(),\n}\n\ntype Action\n = {type: \"VOTE_USER_ACTIONS_DISABLED\", data: {value: boolean, voterId: string}}\n | {type: \"SET_VIEWER_CONFIG\", data: Record}\n | {type: \"SET_APP_CSS\", data?: Record}\n | {type: \"ADD_YASQE\", data: Yasqe}\n | {type: \"REMOVE_YASQE\", data: Yasqe}\n\nexport default function currentViewerReducer(state: CurrentViewerState = initialState, action: Action): CurrentViewerState {\n switch (action.type) {\n case \"ADD_YASQE\":\n return {...state, activeYasqes: [...state.activeYasqes, action.data]}\n case 'REMOVE_YASQE':\n return {...state, activeYasqes: state.activeYasqes.filter(x => x !== action.data)}\n case \"SET_APP_CSS\":\n return {...state, appCss: action.data ?? {}}\n case \"SET_VIEWER_CONFIG\":\n return {...state, config: action.data }\n case \"VOTE_USER_ACTIONS_DISABLED\":\n const newVoters = new Set(state.votersForGlobalUserActionsDisabled)\n if (action.data.value)\n newVoters.add(action.data.voterId)\n else\n newVoters.delete(action.data.voterId)\n\n return { ...state, votersForGlobalUserActionsDisabled: newVoters }\n }\n\n return state\n}\n\nexport function isUserActionsDisabled(state: CurrentViewerState) {\n return state.votersForGlobalUserActionsDisabled.size > 0\n}\n","import { store } from \"../store\"\n\nexport type DebuggerState = {\n enabled: boolean\n}\n\nconst initialState: DebuggerState = {\n enabled: false\n}\n\nexport type DebuggerAction\n = {type: 'SET_DEBUGGER_ENABLED', enabled?: boolean}\n\nexport default function debuggerReducer(state: DebuggerState = initialState, action: DebuggerAction): DebuggerState {\n switch (action.type) {\n case \"SET_DEBUGGER_ENABLED\":\n return { ...state, enabled: Boolean(action.enabled) }\n }\n\n return state\n}\n\nexport function setDebuggerEnabled(enabled: boolean) {\n const action: DebuggerAction = {type: 'SET_DEBUGGER_ENABLED', enabled}\n store.dispatch(action)\n}\n","export default __webpack_public_path__ + \"static/media/info.8b4e18dd.svg\";","import { Fragment } from 'react'\n\nconst emailRegExp =\n /(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))/g\n\nexport function AutoHyperlink(props) {\n if (!props.text) return null\n\n const emails = extractEmails(props.text)\n const texts = extractNonEmailTexts(props.text, emails)\n\n return (\n \n {texts.map((text, i) => {\n const email = emails?.[i]\n return (\n \n {text}\n {email && (\n \n {email}\n \n )}\n \n )\n })}\n \n )\n}\n\nfunction extractEmails(text) {\n return [...text.matchAll(emailRegExp)].map(([email]) => email)\n}\n\nfunction extractNonEmailTexts(text, emailsFromLeftToRight) {\n return emailsFromLeftToRight.reduceRight(\n ([text, ...texts], email) => [...text.split(email), ...texts],\n [text]\n )\n}\n","import { useEffect, useState } from 'react'\nimport Yasqe from '@triply/yasqe'\nimport '../../node_modules/@triply/yasgui/build/yasgui.min.css'\nimport '../../node_modules/@triply/yasqe/build/yasqe.min.css'\nimport { store } from '../store'\n\nexport function SparqlEditor(props: {\n value: string\n onBlur: (value: string) => void\n mode: 'update-value' | 'init-value'\n}) {\n const [yas, setYas] = useState(null)\n const [ref, setRef] = useState(null)\n\n useEffect(() => {\n if (!ref) return () => {}\n\n const newYas = new Yasqe(ref)\n setYas(newYas)\n store.dispatch({type: 'ADD_YASQE', data: newYas})\n return () => store.dispatch({type: 'REMOVE_YASQE', data: newYas})\n }, [ref])\n\n const {onBlur, value} = props\n useEffect(() => {\n if (!yas) return\n yas.setValue(value || '')\n yas.on('blur', () => onBlur(yas.getValue()))\n }, [yas, onBlur, value])\n\n useEffect(() => {\n if (!yas || props.mode === 'init-value') return\n yas.setValue(props.value)\n }, [yas, props.value, props.mode])\n\n return
\n}\n","import React from \"react\"\nimport Dialog from \"./Dialog\"\nimport styles from \"./FormField.module.css\"\nimport { Button as Button_ } from \"reactstrap\"\nimport { ShowableComponent } from \"../hooks/use-dialog\"\nconst Button = Button_ as any\n\nexport function HelpDialog(props: {\n component: ShowableComponent<{}, void>\n onClose: () => void\n}) {\n const Component = props.component\n return (\n \n
\n \n
\n\n
\n \n
\n
\n )\n}","const CURRENT_KEY_PRESSES = new Set()\nconst userInputChannel = new BroadcastChannel('user-input-channel');\n\nexport function setupUserInputMessenger(windowElement: typeof window = window) {\n windowElement.addEventListener('keydown', (event) => {\n registerKey(event.key)\n })\n\n windowElement.addEventListener('keyup', (event) => {\n deregisterKey(event.key)\n })\n}\n\nfunction registerKey(key: string) {\n if (CURRENT_KEY_PRESSES.has(key)) return\n\n CURRENT_KEY_PRESSES.add(key)\n broadcastKeyRegistration()\n}\n\nfunction deregisterKey(key: string) {\n if (!CURRENT_KEY_PRESSES.has(key)) return\n\n CURRENT_KEY_PRESSES.delete(key)\n broadcastKeyRegistration()\n}\n\nfunction broadcastKeyRegistration() {\n userInputChannel.postMessage(CURRENT_KEY_PRESSES)\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"overlay\":\"Dialog_overlay__S_Pka\",\"frame\":\"Dialog_frame__3XaI8\",\"closeButton\":\"Dialog_closeButton__1TQZw\",\"okButton\":\"Dialog_okButton__2Pl7D\",\"body\":\"Dialog_body__iLin2\"};","import { Component, Fragment } from 'react'\nimport { connect } from 'react-redux'\nimport styles from './Viewer.module.css'\nimport { Button, Input, Label } from 'reactstrap'\nimport { FormGroup } from './FormGroup'\nimport Dialog from './Dialog'\nimport axios from 'axios'\nimport { ConfigurationTopBar } from './ConfigurationTopBar'\nimport Header from './Header'\nimport Footer from './Footer'\nimport Notification from './Notification'\nimport Area from './Area'\nimport Spinner from './Spinner'\nimport defaultConfig from './defaultConfig.json'\nimport { Helmet } from 'react-helmet'\nimport { Dialog as InfoDialog, MenuItem, Select } from '@mui/material'\nimport { inflateLayout, LAYOUT_NAME } from '../helpers/layout'\n\nimport { ToastContainer } from 'react-toastify'\nimport 'react-toastify/dist/ReactToastify.css'\nimport { AutoHyperlink } from './AutoHyperlink'\nimport { FETCH_VIEWER_SUCCESS, SET_LAYOUT_NAME } from '../redux/project'\nimport { fixupLegacyRepoURL, getCgiUrl } from \"../helpers/url\"\nimport { getAndSetDefaultParameterValues } from './ViewerContextUtils'\nimport { AppVariables } from './AppVariables'\nimport { FontListButton } from \"./FontList\"\nimport { SparqlTriggerExecutor } from './SparqlTriggerExecutor'\nimport { JsonEditor, JsonTextEditor } from \"./JsonEditor\"\nimport { format as formatDate } from \"date-fns\"\nimport \"typeface-exo\"\nimport \"@fontsource-variable/exo-2\"\n\nexport class Viewer extends Component {\n\n /**\n * @private\n * @type {Viewer | null}\n */\n static _instance = null\n\n state = {\n popupInfoVisible: false,\n dialogVisible: false,\n notification: {},\n loading: true,\n showJSONEditor: false,\n config: null,\n }\n\n static getInstance() {\n return Viewer._instance\n }\n\n onJsonEditClick = () => {\n this.setState({ showJSONEditor: true })\n }\n\n getUrl(data) {\n //console.log(\"get URL \",data);\n try {\n let url = '/api/sparql/' + data.repoURL\n if (data.repoURL.startsWith('http')) {\n // request sparql endpoint directly\n url = data.repoURL\n }\n var modus = false\n if (window.location.host === 'localhost:3000') {\n modus = true\n }\n // var modus=false; //debug\n\n if (data.localRepoURL != null && data.localRepoURL !== '' && modus) {\n url = data.localRepoURL\n }\n \n return url\n } catch (e) {\n console.log('error creating url ', e)\n }\n return null\n }\n\n /**\n * @param bbsparqlendpoint {string}\n * @param repoUrl {string}\n * @return {string}\n */\n constructRepoLoginPath(bbsparqlendpoint, repoUrl) {\n const { viewerPath } = getViewProps(this.props)\n const repoLoginParams = new URLSearchParams(bbsparqlendpoint)\n repoLoginParams.set('repoUrl', repoUrl)\n repoLoginParams.set('viewerPath', viewerPath)\n\n return '/loginbb?id=' + encodeURIComponent(btoa('?' + repoLoginParams.toString()))\n }\n\n async componentDidMount() {\n const { projectPath, viewerPath } = getViewProps(this.props)\n\n Viewer._instance = this\n\n let viewer = this.props.project.viewers.find((v) => v.path === viewerPath)\n if (viewer && viewer.loaded) {\n console.log(\"component did mount load into state\");\n return this.loadViewerIntoState(viewer)\n }\n // no idea where CONFIG_URL comes from....\n if ((window.CONNECTED_APPS_STATIC) && (window.CONFIG_URL==null)) \n {\n window.CONFIG_URL=\"./config.json\";\n }\n \n const request = window.CONNECTED_APPS_STATIC\n ? {\n method: 'get',\n url: window.CONFIG_URL,\n headers: { 'Content-Type': 'application/json' },\n }\n : {\n method: 'get',\n url: `/api/projects/${projectPath}/viewers/${viewerPath}`,\n headers: { Authorization: `Bearer ${localStorage.getItem('kvk-vb-token')}` },\n }\n\n let config\n try {\n // console.log(request);\n\n const configResponse = await axios(request)\n config = configResponse.data\n } catch(error) {\n if (error.response?.status === 401) return this.props.history.push('/login', `projects/${projectPath}/${viewerPath}`)\n if (error.response?.status === 404) return this.loadNewViewerConfig(viewerPath)\n throw error\n }\n if (!config) throw new Error('somehow no config was fetched')\n\n if (window.CONNECTED_APPS_STATIC == null && config.repoURL.startsWith('http'))\n {\n if (config.repoURL.includes(\"BloodBee\"))\n {\n // (Hans: so annoying so skipping this when it contains BloodBee\n }\n else\n {\n alert(`Attention: This app interacts with external triplestore-endpoint \"${config.repoURL}\". Ignore this message if this is on purpose. This message will not show up when this app is locked-and-published.`)\n }\n \n }\n\n\n if (config.prejs != null) {\n try {\n eval(config.prejs) // eslint-disable-line no-eval\n } catch (error2) {\n console.log(error2, config.prejs)\n }\n }\n\n const loadConfig = async () => {\n //console.log(\"load config load into state\");\n await this.loadViewerIntoState(config)\n this.props.dispatch({ type: FETCH_VIEWER_SUCCESS, data: config })\n this.keepAlive('init')\n }\n\n if (this.shouldConnectToWistorBackend(config)) {\n const auth = await this.reauth(config)\n if (auth.isAutoLogin && !auth.success) return auth.goToLoginPage()\n\n const isAuthorised = await this.isAuthorised(config)\n const user = isAuthorised.user\n if (true) // to retreive incorrect configs. previously I could use ?debug=skipLogin to skip to login procedure resulting in starting up the client without sparql endpoint access. This allows an editor to set the correct parameters\n {\n if (!user) \n {\n \n if (window.location.search.toLowerCase().includes(\"debug=skiplogin\")) {\n console.log(\"debug skiplogin\");\n loadConfig();return;\n }\n throw new Error('somehow no user data was fetched')\n }\n if (!isAuthorised.success) return isAuthorised.goToLoginPage()\n\n\n this.publish('user.fullAccess', Boolean(user.fullAccess))\n \n if (user.parameters!=null) document.userParameters=user.parameters;\n if (document.userParameters==null) document.userParameters={};\n document.userParameters.userUri=user.userUri;\n document.userParameters.userName=user.userName;\n }\n }\n\n loadConfig()\n }\n\n /** @param {'init' | 'destroy'} mode */\n keepAlive = (mode) => {\n if (mode === 'init') {\n if (!this.keepAliveInterval) setInterval(() => this.isAuthorised(), 5*60*1000)\n return\n }\n\n if (mode === 'destroy') {\n if (!this.keepAliveInterval) return\n clearInterval(this.keepAliveInterval)\n return this.keepAliveInterval = null\n }\n\n\n throw new Error(`unknown mode: ${JSON.stringify(mode)}`)\n }\n\n /**\n * @param {Record} config\n * @param {Object} options\n * @param {boolean} [options.silent=false] - If true, suppresses logging output and alerts. Unexpected errors are still logged.\n * @returns {Promise<{ user: any, success: boolean, goToLoginPage: () => any }>}\n */\n async isAuthorised(config, options = { silent: false }) {\n const {isLoggedInUrl, viewerPath, goToLoginPage, repo, repo2} = this.viewerParams(config)\n let user\n try {\n const userResponse = await axios({\n method: 'get',\n url: isLoggedInUrl,\n withCredentials: true,\n params: { viewerPath }\n })\n user = userResponse.data\n } catch(error) {\n console.error(error)\n }\n\n const success = (() => {\n if (!user) {\n if (!options?.silent) {\n console.error('no user data was fetched')\n }\n return false\n }\n \n if (user.loggedIn==null) {\n console.error('no user data was fetched (22)')\n return false\n }\n \n \n\n\n if (user.loggedIn.toLowerCase() !== 'true') return false\n\n if (user.oidcLoginStatus === 'USER_NOT_PERMITTED' || user.oidcLoginStatus === 'REPO_NOT_PERMITTED') {\n if (!options?.silent) {\n alert('Your account does not have sufficient permissions for this application.')\n }\n return false\n }\n\n if (repo == null || user.repo == null) return false\n\n if (repo.toLowerCase() !== user.repo.toLowerCase() && repo2.toLowerCase() !== user.repo.toLowerCase()) {\n if (!options?.silent) {\n alert('wrong repo. This account is not valid for this application.')\n }\n return false\n }\n\n return true\n })()\n\n return {user, goToLoginPage, success}\n }\n\n /**\n * @param {any} config\n * @returns {Promise<{ isAutoLogin: boolean, success: boolean, goToLoginPage: () => any }>}\n */\n async reauth (config = this.state.viewer) {\n if (config == null) throw new Error('Reauth requested without any config loaded')\n\n const { isAutoLogin, psw, login, autoLoginUrl, goToLoginPage } = this.viewerParams(config)\n if (!isAutoLogin) return { isAutoLogin, goToLoginPage, success: false }\n\n let success\n try {\n this.autoLogin = this.autoLogin ?? axios({\n method: 'post',\n url: autoLoginUrl,\n withCredentials: true,\n data: { login, psw },\n })\n const response = await this.autoLogin\n success = response.data?.loggedIn?.toLowerCase?.() === 'true'\n\n } catch(error) {\n success = !(error?.response?.status === 401 || error?.response?.status === 403)\n if (!success) alert('Default login credentials are incorrect. Login with valid credentials and change it to fix this.')\n }\n\n this.autoLogin = null\n return { isAutoLogin, goToLoginPage, success }\n }\n\n viewerParams(config = this.state.viewer) {\n const { projectPath, viewerPath } = getViewProps(this.props)\n\n const params = new URLSearchParams(config.bbsparqlendpoint)\n const repoName = params.get('repo')\n const repo2 = params.get('repo2') ?? ''\n const psw = params.get('psw')\n const login = params.get('login')\n const isAutoLogin = psw != null && login != null\n\n const repoURL = fixupLegacyRepoURL(config.repoURL, repoName)\n const localRepoURL = fixupLegacyRepoURL(config.localRepoURL, repoName)\n\n const sparqlUrl = getCgiUrl('sparql', repoName, repoURL, localRepoURL)\n const autoLoginUrl = getCgiUrl('login', repoName, repoURL, localRepoURL)\n const isLoggedInUrl = getCgiUrl('isloggedin', repoName, repoURL, localRepoURL)\n const repoLoginUrl = this.constructRepoLoginPath(config.bbsparqlendpoint, sparqlUrl)\n\n const goToLoginPage = () => this.props.history.replace(repoLoginUrl, this.props.location.pathname)\n\n return {projectPath, viewerPath, repo: repoName, repo2, isAutoLogin, psw, login, autoLoginUrl, sparqlUrl, isLoggedInUrl,\n repoURL, localRepoURL, repoLoginUrl, goToLoginPage}\n }\n\n shouldConnectToWistorBackend(config) {\n const isConnectedToLocalRepo = config.localRepoURL?.includes(':7200') && window.location.host === 'localhost:3000'\n if (isConnectedToLocalRepo) return false\n if (config.deleted) return false\n if (window.location.search.includes(\"debug=skiplogin\")) return false\n return Boolean(config.bbsparqlendpoint?.includes?.('repo='))\n }\n\n loadNewViewerConfig(viewerPath) {\n this.setState({\n viewer: inflateLayout({ ...defaultConfig, path: viewerPath, new: true }),\n loading: false,\n })\n }\n\n componentDidUpdate(prevProps, prevState) {\n const viewer = this?.state?.viewer\n if (viewer == null) return\n\n if (viewer !== prevState.viewer) {\n this.props.dispatch({\n type: 'SET_VIEWER_CONFIG',\n data: viewer\n })\n }\n\n if (this.state.viewer.update60Enabled) {\n // console.log(\"we shoud update 60 \",this.state);\n if (this.props.update60Running) {\n // console.log(\"but is already running\");\n } else {\n if (this.update60) return;\n this.update60=true;\n\n // console.log(\"starting update 60 \");\n \n var me =this;\n setTimeout(function () {\n \n me.changingProps()},500 ); // why is this suddenly a problem?\n // ()\n }\n } else {\n // console.log(\"update 60 should not be running\")\n if ( (true) && (this.state.update60Running) ) {\n console.log(\"disabling update 60\")\n this.props.dispatch({\n type: 'PUBLISH',\n data: {\n update60Running: false,\n },\n })\n // console.log(\"disabling update 60\")\n } else {\n // console.log(\"update60 is not running\");\n }\n }\n\n const isSaved = this.state.viewer.id != null\n if (!isSaved) {\n this.save({ showNotification: false }) // Do not show 'saved' notification on creation of a new app\n }\n\n }\n\n publish = (topic, value) => {\n this.props.dispatch({ type: 'PUBLISH', data: { [topic]: value } })\n }\n\n loadViewerIntoState(viewer) {\n if (this.loadViewerIntoStateOnlyOnce!=null) return;\n this.loadViewerIntoStateOnlyOnce=true;\n // console.log(\"Load Viewer Into State \",viewer);\n return new Promise((resolve, reject) => {\n try {\n this.setState({\n viewer: inflateLayout(viewer),\n loading: false,\n popupInfoVisible: viewer.popupInfoAtStart,\n }, resolve)\n this.props.dispatch({ type: SET_LAYOUT_NAME, data: viewer.layoutName })\n this.registerAppCss(viewer.css)\n\n var r = getAndSetDefaultParameterValues(viewer);\n for (var key in r) {\n // console.log(\"setting default parameters \",key,r[key])\n this.publish(key,r[key]);\n }\n } catch(e) {\n reject(e)\n }\n })\n }\n\n saveTriggers = async (triggers) => {\n await this.updateViewer({triggers})\n await this.save()\n }\n\n async updateViewer(partialViewer) {\n return new Promise(resolve => {\n this.setState({ viewer: { ...this.state.viewer, ...partialViewer } }, () => resolve())\n })\n }\n\n uuidv4() {\n return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, (c) =>\n (c ^ (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (c / 4)))).toString(16)\n )\n }\n changingProps() {\n if (this.state.update60Running) return\n if (this.props.update60Running) return\n // console.log(\"setting first update60 value\");\n\n this.props.dispatch({\n type: 'PUBLISH',\n data: {\n update60: 'start',\n update60Running: true,\n },\n })\n\n this.changingProps60(true)\n }\n\n changingProps60(b) {\n if (b || this.state.viewer.update60Enabled) {\n var me = this\n if (me.loop60) return\n me.loop60 = true\n setTimeout(function () {\n console.log(\"changing update60 value \");\n let id = me.uuidv4()\n me.props.dispatch({\n type: 'PUBLISH',\n data: {\n update60: id,\n },\n })\n // console.log('changing 60')\n me.loop60 = false\n me.changingProps60(false)\n }, 60000)\n }\n }\n\n componentWillUnmount() {\n clearTimeout(this.timer)\n this.keepAlive('destroy')\n Viewer._instance = null\n }\n\n onChange = (config) => {\n let viewer = { ...this.state.viewer, mainArea: config }\n this.setState({ viewer })\n }\n\n selectLayout = (layoutName) => {\n let viewer = inflateLayout({ ...this.state.viewer, layoutName })\n this.setState({ viewer })\n this.props.dispatch({ type: SET_LAYOUT_NAME, data: layoutName })\n }\n\n /** @type {Promise | null} */\n savingPromise = null\n save = async (opts) => {\n if (this.savingPromise) {\n try {\n await this.savingPromise\n } catch (e) {\n // ignore\n }\n }\n\n this.registerAppCss(this.state?.viewer?.css)\n this.savingPromise = this.saveImpl(opts)\n return this.savingPromise\n }\n\n saveImpl = async ({showNotification = true} = {}) => {\n let viewer = this.state.viewer\n delete viewer.project\n\n const { projectPath, viewerPath } = getViewProps(this.props)\n \n try {\n const response = await axios({\n method: viewer.new ? 'post' : 'put',\n url: `/api/projects/${projectPath}/viewers` + (viewer.new ? '' : `/${viewerPath}`),\n headers: { Authorization: `Bearer ${localStorage.getItem('kvk-vb-token')}` },\n data: viewer,\n })\n const { data } = response\n\n if (showNotification) {\n if (this.timer) clearTimeout(this.timer)\n this.setState({ notification: { text: 'saved', type: 'success' } })\n this.timer = setTimeout(() => this.setState({ notification: {} }), 3000)\n }\n\n this.setState({ viewer: inflateLayout({ ...data, new: false }) })\n const {project, ...strippedData} = data\n this.props.dispatch({ type: 'SAVE_VIEWER_SUCCESS', data: strippedData })\n\n } catch(error) {\n \n if (error.response.status === 401) {\n this.props.history.push('/login', `projects/${projectPath}/${viewerPath}`)\n } else {\n this.setState({\n notification: {\n text: 'not saved: ' + error.response.data,\n type: 'failure',\n },\n })\n this.timer = setTimeout(() => this.setState({ notification: {} }), 3000)\n }\n\n }\n }\n\n /**\n * @param {string} [appCssJson] appCss JSON-string of something that should be Record\n */\n registerAppCss (appCssJson) {\n if (!appCssJson) return this.props.dispatch({type: 'SET_APP_CSS'})\n try {\n const appCss = JSON.parse(appCssJson)\n this.props.dispatch({type: 'SET_APP_CSS', data: appCss})\n } catch(e) {\n console.error(e)\n }\n }\n\n onDialogOkClick = () => {\n this.setState({ dialogVisible: false })\n this.save()\n }\n\n onHeaderClick = (e) => {\n if (getViewProps(this.props).mode === 'edit') {\n this.setState({ dialogVisible: true })\n }\n }\n\n jsonOKClick = () => {\n this.setState({ showJSONEditor: false })\n }\n\n /**\n * @param voterId {string}\n * @param userActionsDisabled {boolean}\n */\n voteToDisableUserActions = (voterId, userActionsDisabled) => {\n this.props.dispatch({\n type: \"VOTE_USER_ACTIONS_DISABLED\",\n data: { voterId, value: userActionsDisabled }\n })\n }\n\n render() {\n // console.log(\"viewer render function\",this);\n if (this == null) return \n // if (true){ var id=\"halalo\"; this.props.history.push('/loginbb?id='+id, this.props.location.pathname); return null;}\n if (this.state == null) return \n if (this.state.loading) return \n /** @type {LoginState} */\n const loginState = this.props.loginState\n\n let viewer = this.state.viewer\n if (!viewer || viewer.deleted) return (\n

This viewer does not exist or has been deleted. Please contact an admin if this is a problem.

\n )\n\n var me = this\n document.st = function () {\n viewer.notShowTop = false\n me.setState({ notShowTop: false })\n }\n document.preview = function () {\n getViewProps(this.props).mode = 'preview'\n me.setState({ mode: 'preview' })\n }\n document.edit = function () {\n getViewProps(this.props).mode = 'edit'\n me.setState({ mode: 'edit' })\n }\n\n let notification = this.state.notification\n const { mode, projectPath, viewerPath } = getViewProps(this.props)\n\n let showBottom = viewer.notShowBottom\n if (showBottom == null) {\n showBottom = true\n } else {\n showBottom = !showBottom\n }\n\n let showTop = viewer.notShowTop\n if (showTop == null) {\n showTop = true\n } else {\n showTop = !showTop\n }\n\n let css = viewer.css\n if (css) {\n try {\n css = JSON.parse(css)\n } catch (error) {\n css = {}\n }\n } else {\n css = {}\n }\n\n const { repo: repoName } = this.viewerParams(viewer)\n\n return (\n
\n {viewer.triggers?.map(trigger => (\n {\n if (trigger.voteForUserActionsDisabledWhenLoading)\n this.voteToDisableUserActions(trigger.label, isFetching)\n }}\n key={trigger.label}\n templateId={trigger.label}\n endpoint={getCgiUrl('sparql', repoName, viewer.repoURL, viewer.localRepoURL)}\n sparqlTemplate={trigger.sparqlQuery}\n pubVars={this.props.pubsub}\n publish={this.publish}\n dispatch={this.props.dispatch}\n />))}\n
\n\n \n {viewer.title}\n {viewer.project && (\n \n )}\n \n \n\n {!showTop && loginState.isLoggedIn && (\n <>\n {(new URLSearchParams(window.location.search)).get('hover') === 'app-variables' && (\n \n )}\n \n )}\n\n
\n {!window.CONNECTED_APPS_STATIC && (\n {this.setState({ dialogVisible: true}) }}\n mode={mode}\n projectPath={projectPath}\n viewerPath={viewerPath}\n repoURL={viewer.repoURL}\n saveTriggers={this.saveTriggers}\n triggers={viewer.triggers ?? []}\n />\n )}\n
\n {showTop && (\n \n this.setState({ popupInfoVisible: true }) : null}\n />\n \n )}\n\n
\n
\n \n
\n
\n\n {this.state.viewer.layout?.showFooter && (\n
\n )}\n\n
\n
\n\n this.setState({ popupInfoVisible: false })}\n >\n
\n \n
\n \n\n {this.state.dialogVisible && (\n \n \n \n this.selectLayout(e.target.value)}\n value={this.state.viewer.layoutName || ''}\n >\n Custom\n Original\n \n \n\n \n \n this.updateViewer({ title: e.target.value })}\n />\n \n \n \n this.updateViewer({ subtitle: e.target.value })}\n />\n \n\n \n \n \n this.setState({\n viewer: { ...viewer, infoMessage: e.target.value },\n })\n }\n />\n \n \n \n \n\n \n \n {\n this.setState({\n viewer: { ...viewer, prejs: e.target.value },\n })\n }}\n />\n \n \n \n {\n this.setState({\n viewer: { ...viewer, bbsparqlendpoint: e.target.value },\n })\n }}\n />\n \n \n \n \n this.setState({\n viewer: { ...viewer, repoURL: e.target.value },\n })\n }\n />\n \n \n \n \n this.setState({\n viewer: { ...viewer, localRepoURL: e.target.value },\n })\n }\n />\n \n\n \n \n \n this.setState({\n viewer: {\n ...viewer,\n sparqlErrorMessage: e.target.value,\n },\n })\n }\n />\n \n\n \n \n \n this.setState({\n viewer: { ...viewer, logoURL: e.target.value },\n })\n }\n />\n \n \n \n \n this.setState({\n viewer: { ...viewer, css: e.target.value },\n })\n }\n />\n \n \n \n \n this.setState({\n viewer: { ...viewer, pageWidth: e.target.value },\n })\n }\n />\n \n \n \n {\n this.setState({\n viewer: { ...viewer, parameterValues: value },\n })\n }} />\n \n\n \n \n \n \n \n \n\n \n \n \n\n \n \n \n \n \n \n\n \n \n {\n if (config == null) return\n this.setState(prevState => ({\n viewer: {\n ...config,\n id: prevState.viewer.id,\n user: prevState.viewer.user,\n path: prevState.viewer.path,\n project: prevState.viewer.project,\n createdAt: prevState.viewer.createdAt,\n }\n }))\n }} />\n \n \n \n \n
\n \n
\n
\n )}\n
\n \n
\n )\n }\n}\n\nfunction getViewProps(props) {\n if (window.CONNECTED_APPS_STATIC)\n return {\n mode: 'preview',\n projectPath: window.PROJECT,\n viewerPath: window.VIEWER,\n }\n\n return {\n mode: props.match.params.mode,\n projectPath: props.match.params.projectPath,\n viewerPath: props.match.params.viewerPath,\n }\n}\n\nconst mapStateToProps = (state) => ({\n project: state.project,\n loginState: state.login,\n pubsub: state.pubsub,\n})\n\nexport default connect(mapStateToProps)(Viewer)\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"main\":\"TableCells_main__1LDXq\",\"list\":\"TableCells_list__Baqjh\",\"firstItemBold\":\"TableCells_firstItemBold__8TtNe\",\"link\":\"TableCells_link__3I5-i\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"main\":\"Yasgui_main__2QBJb\",\"buttonContainer\":\"Yasgui_buttonContainer__3Nrd0\",\"tableContainer\":\"Yasgui_tableContainer__36LQd\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"fullscreen\":\"BBHTML_fullscreen__1xDzG\",\"fullwindow\":\"BBHTML_fullwindow__3laee\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"main\":\"SequencePaths_main__3J324\",\"pathSegment\":\"SequencePaths_pathSegment__pWb5f\",\"refresh\":\"SequencePaths_refresh__2DLmt\",\"threeColorTemplate\":\"SequencePaths_threeColorTemplate__3vOol\",\"label\":\"SequencePaths_label__Z4T5_\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"buttonsContainer\":\"Button_buttonsContainer__1LJk_\",\"button\":\"Button_button__d0b-b\"};","import * as React from \"react\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { Cross2Icon } from \"@radix-ui/react-icons\"\nimport { mergeClasses } from \"../../helpers/styling\"\n\nconst Dialog = DialogPrimitive.Root\n\nconst DialogTrigger = DialogPrimitive.Trigger\n\nconst DialogPortal = DialogPrimitive.Portal\n\nconst DialogClose = DialogPrimitive.Close\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName\n\nconst DialogContent = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, children, ...props }, ref) => (\n \n \n \n {children}\n \n \n Close\n \n \n \n))\nDialogContent.displayName = DialogPrimitive.Content.displayName\n\nconst DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes) => (\n \n)\nDialogHeader.displayName = \"DialogHeader\"\n\nconst DialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes) => (\n \n)\nDialogFooter.displayName = \"DialogFooter\"\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nDialogTitle.displayName = DialogPrimitive.Title.displayName\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nDialogDescription.displayName = DialogPrimitive.Description.displayName\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogTrigger,\n DialogClose,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"main\":\"Notifications_main__19VRm\",\"box\":\"Notifications_box__1mf7Y\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"WidgetWrapper_wrapper__2_llH\",\"clickable\":\"WidgetWrapper_clickable__2Ptdx\"};","import { Component, createRef } from 'react'\n\nimport ReactDOM from 'react-dom'\nimport { generateEmptyResponse } from '../../../helpers/sparql'\nimport './BBIFrame.css'\n\nimport throttle from 'lodash/throttle'\nimport PublishUtils from '../../../helpers/PublishUtils'\nimport AfterJS from '../../../helpers/AfterJS'\nimport { parseTextForVariables } from '../../../helpers/sparql'\nimport './bbutil'\nimport {getSparqlFunction} from '../../../helpers/utils'\n\nimport Command from '../../../helpers/Command';\nimport { getAbsoluteRepoUrl } from '../../../helpers/url'\n\nimport shallowCompare from 'react-addons-shallow-compare'; \n\nimport _ from 'lodash';\nimport { setupUserInputMessenger } from '../../../helpers/user-input-messenger'\nimport { toast } from 'react-toastify'\n\nclass BBIFrame extends Component {\n iframeRef = createRef()\n\n state = {\n imgViz: false,\n selectedUri: null,\n reloadID: 1,\n }\n\n static htmln = 0\n static scrolling = 'no'\n noEvents = false;\n usesParameters=true;\n\n // handy for Iface js to use\n getAbsoluteRepoUrl=getAbsoluteRepoUrl; \n parseTextForVariables=parseTextForVariables;\n\n command = Command;\n commandInstance = new Command(this);\n\n publishUtils = PublishUtils;\n\n showToast(msg,severity) {\n if (severity==null) severity=\"info\";\n toast(msg, { type: severity })\n\n }\n\n uploadSuccessfulAfter() {\n //console.log(\"after upload\");\n PublishUtils.setTimeStampParameter(this, true)\n }\n \n\n executeSparql(sparql,rv,errorRV){\n\n \n let qq =parseTextForVariables(sparql, this.props);\n \n if (this.query==null)\n {\n this.query=getSparqlFunction(this.props);\n }\n\n\n \n this.query(qq,function(arg){\n \n if (rv!=null) rv.call(this,arg);}\n ,function(arg2){\n if (errorRV!=null) errorRV.call(this,arg2);\n \n console.log(arg2);\n \n });\n \n\n }\n\n onClick = (event, uri) => {\n \n var me = this\n if (uri == null) {\n uri = event\n }\n if (\n event != null &&\n event === 'http://www.bbsgroep.nl/application/v2/hasTextOutput'\n ) {\n me.noEvents = true\n var pvar = me.props.publishTextVariable\n if (pvar != null) {\n me.props.publish(pvar, uri)\n //PublishUtils.resetParameter(me);\n }\n me.noEvents = false\n\n return\n }\n if (\n event != null &&\n event === 'http://www.bbsgroep.nl/application/v2/hasVar1Output'\n ) {\n me.noEvents = true\n pvar = me.props.publishVariable1\n if (pvar != null) {\n if (uri !== event) {\n me.props.publish(pvar, uri)\n }\n //PublishUtils.resetParameter(me);\n }\n me.noEvents = false\n\n return\n }\n\n //console.log(\"continuing\");\n me.noEvents = true\n var pvar = me.props.publishVariable\n //console.log(pvar);\n if (pvar != null) {\n // console.log(\"event iframe, setting variable \",pvar,uri,me)\n me.props.publish(pvar, uri)\n // console.log(\"run after selection \",AfterJS);\n try {\n AfterJS.runAfterSelection(me)\n } catch (e) {\n console.log(e)\n }\n // console.log(\"run after selection ended\");\n PublishUtils.resetParameter(me)\n }\n me.noEvents = false\n }\n\n getUrl() {\n return ''\n }\n\n componentDidMount() {\n var me = this\n this.mounted = true\n // var iframe=ReactDOM.findDOMNode(this);\n var div = ReactDOM.findDOMNode(this).parentNode\n\n div.setAttribute('style', 'position:relative;')\n\n if (this.iface != null) {\n try {\n if (me.iface.afterIntegration != null) {\n me.iface.afterIntegration(this.props)\n }\n } catch (e) {\n console.log(e)\n }\n this.updateMe(null)\n }\n }\n\n getObjectDiff(obj1, obj2) {\n const diff = Object.keys(obj1).reduce((result, key) => {\n if (!obj2.hasOwnProperty(key)) {\n result.push(key);\n } else if (_.isEqual(obj1[key], obj2[key])) {\n const resultKeyIndex = result.indexOf(key);\n result.splice(resultKeyIndex, 1);\n }\n return result;\n }, Object.keys(obj2));\n\n return diff;\n}\n\n\n shouldComponentUpdate(arg, arg2) {\n // console.log(this.getUrl()+\" should update \",this.mounted,this.iface,this.noEvents );\n if (!this.mounted) {return false;}\n if (this.iface == null) {return false;}\n if (this.noEvents) {return false;}\n var pubsubNew= _.cloneDeep(arg.pubsub);\n var pubsubOrg= _.cloneDeep(this.props.pubsub);\n delete pubsubOrg.update60;\n delete pubsubOrg.update60Timestamp;\n delete pubsubOrg.update60Running;\n delete pubsubOrg.update60RunningTimestamp;\n \n delete pubsubNew.update60;\n delete pubsubNew.update60Timestamp;\n delete pubsubNew.update60Running;\n delete pubsubNew.update60RunningTimestamp;\n \n \n \n // if (shallowCompare(this, arg, arg2)==false && _.isEqual(arg.pubsub, this.props.pubsub))\n if (shallowCompare(this, arg, arg2)==false && _.isEqual(pubsubNew, pubsubOrg))\n // if (_.isEqual(this.state, arg2) && _.isEqual(pubsubNew, pubsubOrg))\n {\n // console.log(\"shallowcompare says false for update for \",this.getUrl());\n return false;\n }\n\n //console.log(arg.pubsub,this.props.pubsub)\n //console.log(this.getUrl()+\" should update\",_.isEqual(this.state,arg2),this.getObjectDiff(this.state, arg2),this.getObjectDiff(pubsubNew, pubsubOrg));\n return true\n }\n\n componentDidUpdate(prevProps, prevState) {\n this.updateMe(this.props, this.state)\n\n if (this.iface.onComponentDidUpdate) {\n this.iface.onComponentDidUpdate(prevProps, prevState)\n }\n }\n\n registerMe() {\n // console.log(\"IFRAME register me \"+this.getUrl());\n\n var me = this\n\n setupUserInputMessenger(me.iframeRef.current.contentWindow)\n\n me.iface.me = me\n // console.log(\"add set loading to iface\");\n me.iface.setLoading = function (arg) {\n me.props.setLoading(arg)\n }\n me.iface.setMessage=function(msg)\n {\n //hier norents toaster functie\n if (msg==null)return;\n try\n {\n me.props.sendNotification(msg)\n }\n catch(e){}\n console.log(\"Toaster msg:\",msg)\n\n\n }\n\n if (me.iface.widget == null) {\n me.iface.widget = {\n sendEvent: function (e, arg) {\n var pvar = me.props.publishVariable\n if (pvar != null) {\n // console.log(\"running iframe onclick event \",e,arg);\n me.onClick(arg)\n me.setState({ selectedUri: arg })\n }\n },\n publish: this.publish,\n publishList: this.publishList,\n test: function () {\n console.log('test')\n },\n reExecuteSparql: function () {\n try {\n me.reExecuteSparql()\n } catch (e) {\n console.log(e)\n }\n },\n }\n }\n\n if (this.mounted) {\n try {\n if (me.iface.afterIntegration != null) {\n // console.log(\"after integration called\");\n me.iface.afterIntegration()\n }\n } catch (e) {\n console.log(e)\n }\n //console.log(\"registerMe this.updateMe\"+this.getUrl());\n this.updateMe(this.props)\n }\n }\n\n publish = (publishVariableName, value) => {\n \n const publishVariable = this.props[publishVariableName]\n if (!publishVariable) return\n //console.log(this.getUrl(),publishVariable,value);\n this.props.publish(publishVariable, value)\n }\n\n publishList = (publishVariableName, publishVariableParameterTypeName, list) => {\n const publishVariable = this.props[publishVariableName]\n if (!publishVariable) return\n // console.log(this.getUrl(),publishVariableName,publishVariableParameterTypeName,list);\n const publishVariableParameterType = this.props[publishVariableParameterTypeName]\n const singleValue = PublishUtils.getListAsSingleValue(publishVariableParameterType, list)\n this.props.publish(publishVariable, singleValue)\n }\n\n //updateMe = throttle((arg,arg2) => { this.updateMe2(arg,arg2)}, 200)\n updateMe =this.updateMe2;\n updateMe2(arg={} , arg2={}) {\n \n var me = this;\n var data = arg.data\n \n \n \n try {\n if (me.props.data == null && data == null && me.firstData22 != null) {\n // console.log(\"setbegin sparql results 1\");\n var q = me.props.query\n if (me.props.basequery) q = me.props.basequery\n if (arg.executedSparql != null) q = arg.executedSparql\n let qq = null\n if (q != null) {\n qq = parseTextForVariables(q, arg)\n }\n\n me.iface.setBeginSparqlResults(me.firstData22, q, null, null, qq)\n delete me.firstData22\n } else {\n // console.log(arg.data,me.latestData22);\n if (arg.data != null) {\n if (me.latestData22 != arg.data)\n {\n let q = arg.query\n if (arg.executedSparql != null) q = arg.executedSparql\n\n let qq = null\n if (q != null) {\n qq = parseTextForVariables(q, arg)\n }\n // console.log(this.getUrl(),\"BB IFRAME SET BEGIN SPARQL results 2\",this.props.pubsub,arg.pubsub);\n me.iface.setBeginSparqlResults(arg.data, q, null, null, qq)\n me.latestData22 = arg.data\n }\n else {\n // console.log(\" not updating latest data22 == arg.data\");\n \n }\n } else {\n // console.log(me.props.data,me.latestData22 !=me.props.data)\n if (me.props.data != null) {\n \n if (me.latestData22 != me.props.data) {\n \n let q = me.props.query\n if (arg.executedSparql != null) q = arg.executedSparql\n\n let qq = null\n if (q != null) {\n qq = parseTextForVariables(q, arg)\n }\n // console.log(\"set sparql\");\n me.iface.setBeginSparqlResults(me.props.data, q, null, null, qq)\n me.latestData22 = me.props.data\n }\n } else {\n // console.log(this.props.basequery);\n if (me.props.basequery != null) {\n me = this\n if (me.onlyOnce == null) {\n me.onlyOnce = 'done'\n if (me.props.basequery.length > 10) {\n // console.log(\"iframe geen data maar wel een base query\",this.props.basequery);\n window.top.query(me.props.basequery, function (data) {\n me.firstData22 = data\n me.updateMe(null)\n })\n }\n }\n }\n }\n }\n }\n } catch (e) {\n console.log(e)\n }\n\n \n //console.log(\"me iface setPubSub \",this.iface,this.props.pubsub);\n //console.log(arg);\n try {\n this.iface.setPubSub(arg.pubsub)\n } catch (e) {}\n if (arg == {}) {\n arg = this.props\n }\n //console.log(\"updateMe \"+this.getUrl());\n \n this.setSelection(arg)\n }\n\n setSelection(arg) {\n // console.log(\"iframe setSelection \",arg,this.getUrl());\n try {\n var pvar = arg.subscribeVariable\n if (pvar != null && arg.pubsub != null) {\n var selectionValue = arg.pubsub[pvar]\n\n if (\n selectionValue != null &&\n this.state != null &&\n this.state.selection !== selectionValue\n ) {\n if (this.iface != null) {\n // console.log(\"set Selection iface \",selectionValue);\n this.iface.selectUri(selectionValue)\n this.state.selection = selectionValue //eslint-disable-line react/no-direct-mutation-state\n // this.iface.setBeginSparqlResults(me.props.data,me.props.query);\n } else {\n // console.log(\"iframe set selection no iface\");\n }\n }\n }\n } catch (e) {\n console.log('error met selection ', e)\n }\n }\n\n reload() {\n \n this.once = null\n this.iface = null\n\n this.onlyOnce = null\n window.top.Singleton.getInstance().iframes[this.htmlid] = null\n this.htmlid = null\n // console.log(\"reload iframe \",this.getUrl());\n this.setState({ reloadID: Date.now() })\n }\n\ngetParameters()\n{\n\n if (!this.usesParameters)\n {\n // console.log(\"NOT USING parameters....\",this.getUrl());\n return \"?usepar=false\";\n\n } \n var par = '?y=y'+Date.now();\n var title = ''\n if (this.props.title) {\n title = this.props.title\n par += '&title=' + title\n }\n var createRoot = ''\n if (this.props.createRoot) {\n createRoot = this.props.createRoot\n par += '&createRoot=' + createRoot\n }\n var icon = ''\n if (this.props.icon) {\n icon = this.props.icon\n par += '&icon=' + icon\n }\n\n var expandLevel = ''\n if (this.props.expandLevel) {\n expandLevel = this.props.expandLevel\n par += '&expandLevel=' + expandLevel\n }\n var direction = ''\n if (this.props.direction) {\n direction = this.props.direction\n par += '&direction=' + direction\n }\n\n //onderstaande code moeten we eigenlijk vanaf. IFrame objecten kunnen nu via IFace toegang krijgen\n par = '';\n let extra = '?'\n \n for (let key in this.props) {\n if (key === 'loading') continue\n if (key === 'save') continue\n if (key === 'query') continue\n if (key === 'definition') continue\n if (key === 'children') continue\n if (key === 'pubsub') continue\n if (key === 'basequery') continue\n if (key === 'repoURL') continue\n if (key === 'localRepoURL') continue\n if (key === 'sparqlErrorMessage') continue\n if (key === 'titleMenubar') continue\n if (key === 'widget') continue\n if (key === 'panelstyle') continue\n if (key === 'panelstyle2') continue\n if (key === 'extendquery') continue\n if (key === 'jsAfterSelection') continue\n if (key === 'parameterValues') continue\n if (key === 'data') continue\n if (key === 'withinSelectedTab') continue\n if (key === 'selectguidquery') continue\n if (key === 'replaceHeaderJSON') continue\n if (key==\"voteForUserActionsDisabledWhenLoading\") continue;\n if (key==\"syncWithUserActionsDisabled\") continue;\n if (key==\"childParameterText\") continue;\n if (key==\"message\") continue;\n if (key==\"userActionsDisabled\") continue;\n if (key==\"layoutName\") continue;\n if (key==\"infoMenubar\") continue;\n if (key==\"panelstyleExtra\") continue;\n\n\n let value = this.props[key]\n\n if (value != null) {\n if (typeof value === 'function') continue\n if (Array.isArray(value)) {\n continue //value=JSON.stringify(value); console.log(\"submitting array key to iframe\",key);\n }\n\n try {\n if (value.toString().includes('||')) {\n value = value.toString().replaceAll('||', '@@')\n }\n } catch (e) {}\n try {\n value = value.toString().replaceAll('{{', '!@!@')\n } catch (e) {}\n try {\n value = value.toString().replaceAll('}}', '@!@!')\n } catch (e) {}\n par += extra + key + '=' + value\n extra = '&'\n }\n }\n\n return par;\n\n}\n\n\n\n render() {\n \n if (this.once == null) {\n // if (this.props.withinSelectedTab==false) return null;\n this.renderOnce();\n this.once = 'done'\n }\n var height = '100%'\n\n try {\n if (this.props.height != null) {\n height = this.props.height\n }\n } catch (e) {}\n\n var reload = 'reload=' + this.state.reloadID // used to reload the whole iframe\n\n var className = ''\n if (this.props.className) {\n className = this.props.className\n }\n var par =this.getParameters(); //slowly deprecating this\n\n // console.log(par);\n //reload=\"reload=stable\";\n let loading = 'lazy'\n if (par === '') reload = '?' + reload\n else reload = '&' + reload\n // console.log(this.htmlid+\"\",process.env.PUBLIC_URL +this.getUrl()+par+reload);\n //\n // console.log(this.state);\n return (\n