, but this code // executes before the first paint, when

is not yet present. The // classes are added to so styling immediately reflects the current // toolbar state. The classes are removed after the toolbar completes // initialization. const classesToAdd = ['toolbar-loading', 'toolbar-anti-flicker']; if (toolbarState) { const { orientation, hasActiveTab, isFixed, activeTray, activeTabId, isOriented, userButtonMinWidth } = toolbarState; classesToAdd.push( orientation ? `toolbar-` + orientation + `` : 'toolbar-horizontal', ); if (hasActiveTab !== false) { classesToAdd.push('toolbar-tray-open'); } if (isFixed) { classesToAdd.push('toolbar-fixed'); } if (isOriented) { classesToAdd.push('toolbar-oriented'); } if (activeTray) { // These styles are added so the active tab/tray styles are present // immediately instead of "flickering" on as the toolbar initializes. In // instances where a tray is lazy loaded, these styles facilitate the // lazy loaded tray appearing gracefully and without reflow. const styleContent = ` .toolbar-loading #` + activeTabId + ` { background-image: linear-gradient(rgba(255, 255, 255, 0.25) 20%, transparent 200%); } .toolbar-loading #` + activeTabId + `-tray { display: block; box-shadow: -1px 0 5px 2px rgb(0 0 0 / 33%); border-right: 1px solid #aaa; background-color: #f5f5f5; z-index: 0; } .toolbar-loading.toolbar-vertical.toolbar-tray-open #` + activeTabId + `-tray { width: 15rem; height: 100vh; } .toolbar-loading.toolbar-horizontal :not(#` + activeTray + `) > .toolbar-lining {opacity: 0}`; const style = document.createElement('style'); style.textContent = styleContent; style.setAttribute('data-toolbar-anti-flicker-loading', true); document.querySelector('head').appendChild(style); if (userButtonMinWidth) { const userButtonStyle = document.createElement('style'); userButtonStyle.textContent = `#toolbar-item-user {min-width: ` + userButtonMinWidth +`px;}` document.querySelector('head').appendChild(userButtonStyle); } } } document.querySelector('html').classList.add(...classesToAdd); })(); In This World of Wonders - News & Stories | 鶹

Skip to main content

Spark

In This World of Wonders

Mon, Apr 01, 2019

World-renowned Christian philosopher Nicholas Wolterstorff ’53 shares glimpses into his life through a series of vignettes in his memoir, In This World of Wonders: Memoir of a Life in Learning (Eerdmans Publishing, 2019).

“I think of the succession of the vignettes as scenes on a journey through the landscape of memory,” Wolterstorff writes in the preface. “As a scene catches my eye, I stop to look. … There are benches here and there where I can sit and reflect on the significance of what I am seeing. Now and then, I glance ahead.”

His book moves from his humble beginnings in a tiny Minnesota village to his education at Calvin and Harvard, to his career of teaching philosophy and writing books, to the experiences that prompted some of his writing.

“This marvelous memoir embodies everything I admire about Nick Wolterstorff,” writes Calvin philosophy professor James K.A. Smith. “It is wise, humane, and beautiful, infused with love and a passion for justice.”